FundacionLQDVI_WebCongresos/www/administrator/components/com_kunena/admin.kunena.php

2045 lines
78 KiB
PHP

<?php
/**
* @version $Id: admin.kunena.php 2059 2010-03-14 03:42:18Z mahagr $
* Kunena Component
* @package Kunena
*
* @Copyright (C) 2008 - 2009 Kunena Team All rights reserved
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.kunena.com
*
* Based on FireBoard Component
* @Copyright (C) 2006 - 2007 Best Of Joomla All rights reserved
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @link http://www.bestofjoomla.com
*
* Based on Joomlaboard Component
* @copyright (C) 2000 - 2004 TSMF / Jan de Graaff / All Rights Reserved
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @author TSMF & Jan de Graaff
**/
defined( '_JEXEC' ) or die('Restricted access');
@error_reporting(E_ERROR | E_WARNING | E_PARSE);
// Kunena wide defines
require_once (JPATH_ROOT .DS. 'components' .DS. 'com_kunena' .DS. 'lib' .DS. 'kunena.defines.php');
if ($task == 'install')
{
require_once (KUNENA_PATH_ADMIN_INSTALL .DS. 'kunena.install.php');
com_install();
return;
}
$langfile = KUNENA_PATH_ADMIN_LANGUAGE .DS. 'kunena.'.KUNENA_LANGUAGE.'.php';
$defaultlangfile = KUNENA_PATH_ADMIN_LANGUAGE .DS. 'kunena.english.php';
(file_exists($langfile)) ? require_once ($langfile) : require_once ($defaultlangfile);
// Now that we have the global defines we can use shortcut defines
require_once (KUNENA_PATH_LIB .DS. 'kunena.debug.php');
require_once (KUNENA_PATH_LIB .DS. 'kunena.config.class.php');
require_once (KUNENA_PATH_LIB .DS. 'kunena.version.php');
global $fbConfig, $kunenaProfile;
$app =& JFactory::getApplication();
$kunena_db = JFactory::getDBO();
$fbConfig =& CKunenaConfig::getInstance();
$fbConfig->load();
// Class structure should be used after this and all the common task should be moved to this class
require_once (KUNENA_PATH .DS. 'class.kunena.php');
require_once (KUNENA_PATH_ADMIN .DS. 'admin.kunena.html.php');
$kn_tables = CKunenaTables::getInstance();
if ($kn_tables->installed() === false) {
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_ERROR, 'error');
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_OFFLINE, 'notice');
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_REASONS);
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_1);
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_2);
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_3);
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_SUPPORT.' <a href="http://www.kunena.com">www.kunena.com</a>');
html_Kunena::showFbFooter();
return;
}
$cid = JRequest::getVar('cid', array ( 0 ));
if (!is_array($cid)) {
$cid = array ( 0 );
}
$uid = JRequest::getVar('uid', array ( 0 ));
if (!is_array($uid)) {
$uid = array ( $uid );
}
// ERROR: global scope mix
global $order;
$order = JRequest::getVar('order', '');
// initialise some request directives (specifically for J1.5 compatibility)
$no_html = intval(JRequest::getVar('no_html', 0));
$id = intval(JRequest::getVar('id', 0));
$pt_stop = "0";
if (!$no_html)
{
html_Kunena::showFbHeader();
}
$option = JRequest::getCmd('option');
switch ($task)
{
case "new":
editForum(0, $option);
break;
case "edit":
editForum($cid[0], $option);
break;
case "edit2":
editForum($uid[0], $option);
break;
case "save":
saveForum ($option);
break;
case "cancel":
cancelForum ($option);
break;
case "publish":
publishForum($cid, 1, $option);
break;
case "unpublish":
publishForum($cid, 0, $option);
break;
case "remove":
deleteForum($cid, $option);
break;
case "orderup":
orderForum($cid[0], -1, $option);
break;
case "orderdown":
orderForum($cid[0], 1, $option);
break;
case "showconfig":
showConfig ($option);
break;
case "saveconfig":
saveConfig ($option);
break;
case "newmoderator":
newModerator($option, $id);
break;
case "addmoderator":
addModerator($option, $id, $cid, 1);
break;
case "removemoderator":
addModerator($option, $id, $cid, 0);
break;
case "showprofiles":
showProfiles($kunena_db, $option, $lang, $order);
break;
case "profiles":
showProfiles($kunena_db, $option, $lang, $order);
break;
case "userprofile":
editUserProfile($uid);
break;
case "showinstructions":
showInstructions($kunena_db, $option, $lang);
break;
case "showCss":
showCss ($option);
break;
case "saveeditcss":
$file =JRequest::getVar( 'file', 1);
$csscontent = JRequest::getVar( 'csscontent', 1);
saveCss($file, $csscontent, $option);
break;
case "instructions":
showInstructions($kunena_db, $option, $lang);
break;
case "saveuserprofile":
saveUserProfile ($option);
break;
case "upgradetables":
upgradeTables ($option);
break;
case "pruneforum":
pruneforum($kunena_db, $option);
break;
case "doprune":
doprune($kunena_db, $option);
break;
case "douserssync":
douserssync($kunena_db, $option);
break;
case "syncusers":
syncusers($kunena_db, $option);
break;
case "browseImages":
browseUploaded($kunena_db, $option, 1);
break;
case "browseFiles":
browseUploaded($kunena_db, $option, 0);
break;
case "replaceImage":
replaceImage($kunena_db, $option, JRequest::getVar('img', ''), JRequest::getInt('OxP', 1));
break;
case "deleteFile":
deleteFile($kunena_db, $option, JRequest::getVar('fileName', ''));
break;
case "showAdministration":
showAdministration ($option);
break;
case 'recount':
CKunenaTools::reCountUserPosts();
CKunenaTools::reCountBoards();
// Also reset the name info stored with messages
//CKunenaTools::updateNameInfo();
$app->redirect( JURI::base() .'index.php?option=com_kunena', _KUNENA_RECOUNTFORUMS_DONE);
break;
case "showsmilies":
showsmilies($option);
break;
case "editsmiley":
editsmiley($option, $cid[0]);
break;
case "savesmiley":
savesmiley($option, $id);
break;
case "deletesmiley":
deletesmiley($option, $cid);
break;
case "newsmiley":
newsmiley($option);
break;
case 'ranks':
showRanks($option);
break;
case "editRank":
editRank($option, $cid[0]);
break;
case "saveRank":
saveRank($option, $id);
break;
case "deleteRank":
deleteRank($option, $cid);
break;
case "newRank":
newRank($option);
break;
case 'cpanel':
default:
html_Kunena::controlPanel();
break;
}
$kn_version = CKunenaVersion::versionArray();
if ($kn_version->versionname == '@kunenaversionname@') {
$kn_version_name = _KUNENA_VERSION_SVN;
$kn_version_warning = _KUNENA_VERSION_SVN_WARNING;
} else if ($kn_version->versionname == 'NOT UPGRADED') {
$app->enqueueMessage(sprintf(_KUNENA_ERROR_UPGRADE, $kn_version->version), 'notice');
$app->enqueueMessage(_KUNENA_ERROR_UPGRADE_WARN);
$app->enqueueMessage(sprintf(_KUNENA_ERROR_UPGRADE_AGAIN, $kn_version->version));
$app->enqueueMessage(_KUNENA_ERROR_INCOMPLETE_SUPPORT.' <a href="http://www.kunena.com">www.kunena.com</a>');
}
if (strpos($kn_version->version, 'RC') !== false) {
$kn_version_name = _KUNENA_VERSION_RC;
$kn_version_warning = _KUNENA_VERSION_RC_WARNING;
} else if (strpos($kn_version->version, 'BETA') !== false) {
$kn_version_name = _KUNENA_VERSION_BETA;
$kn_version_warning = _KUNENA_VERSION_BETA_WARNING;
} else if (strpos($kn_version->version, 'ALPHA') !== false) {
$kn_version_name = _KUNENA_VERSION_ALPHA;
$kn_version_warning = _KUNENA_VERSION_ALPHA_WARNING;
} else if (strpos($kn_version->version, 'DEV') !== false) {
$kn_version_name = _KUNENA_VERSION_DEV;
$kn_version_warning = _KUNENA_VERSION_DEV_WARNING;
}
if (!empty($kn_version_warning))
{
$app->enqueueMessage(sprintf(_KUNENA_VERSION_INSTALLED, $kn_version->version, $kn_version_name).' '.$kn_version_warning, 'notice');
}
// Detect errors in CB integration
if (is_object($kunenaProfile))
{
$kunenaProfile->enqueueErrors();
//$kunenaProfile->close();
}
html_Kunena::showFbFooter();
function showAdministration($option)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$limit = $app->getUserStateFromRequest("global.list.limit", 'limit', $app->getCfg('list_limit'), 'int');
$limitstart = $app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int');
$levellimit = $app->getUserStateFromRequest("{$option}.limit", 'levellimit', 10, 'int');
/*
* danial
*/
$kunena_db->setQuery("SELECT a.*, a.name AS category, u.name AS editor, g.name AS groupname, h.name AS admingroup"
. "\nFROM #__fb_categories AS a"
. "\nLEFT JOIN #__users AS u ON u.id = a.checked_out"
. "\nLEFT JOIN #__core_acl_aro_groups AS g ON g.id = a.pub_access"
. "\nLEFT JOIN #__core_acl_aro_groups AS h ON h.id = a.admin_access"
. "\n GROUP BY a.id"
. "\n ORDER BY a.ordering, a.name");
$rows = $kunena_db->loadObjectList();
check_dberror("Unable to load categories.");
// establish the hierarchy of the categories
$children = array ();
// first pass - collect children
foreach ($rows as $v)
{
$pt = $v->parent;
$list = isset($children[$pt]) ? $children[$pt] : array ();
$v->location = count($list);
array_push($list, $v);
$children[$pt] = $list;
}
// second pass - get an indent list of the items
$list = fbTreeRecurse(0, '', array (), $children, max(0, $levellimit - 1));
$total = count($list);
if ($limitstart >= $total) $limitstart = 0;
jimport('joomla.html.pagination');
$pageNav = new JPagination( $total, $limitstart, $limit );
$levellist = JHTML::_('select.integerList' , 1, 20, 1, 'levellimit', 'size="1" onchange="document.adminForm.submit();"', $levellimit);
// slice out elements based on limits
$list = array_slice($list, $pageNav->limitstart, $pageNav->limit);
/**
*@end
*/
html_Kunena::showAdministration($list, $children, $pageNav, $option);
}
//---------------------------------------
//-E D I T F O R U M-------------------
//---------------------------------------
function editForum($uid, $option)
{
$kunena_db = &JFactory::getDBO();
$kunena_acl = &JFactory::getACL();
$kunena_my = &JFactory::getUser();
$row = new fbForum($kunena_db);
// load the row from the db table
$row->load($uid);
//echo "<pre>"; print_r ($row); echo "</pre>";
if ($uid)
{
$row->checkout($kunena_my->id);
$categories = array ();
}
else
{
// initialise new record
$categories[] = JHTML::_('select.option', '0', _KUNENA_TOPLEVEL, 'value', 'text');
$row->parent = 0;
$row->published = 0;
$row->ordering = 9999;
}
// get a list of just the categories
$kunena_db->setQuery("SELECT a.id AS value, a.name AS text FROM #__fb_categories AS a WHERE parent='0' AND id<>'$row->id' ORDER BY ordering");
$categories = array_merge($categories, $kunena_db->loadObjectList());
check_dberror("Unable to load categories.");
if ($row->parent == 0)
{
//make sure the Top Level Category is available in edit mode as well:
$kunena_db->setQuery("SELECT distinct '0' AS value, '"._KUNENA_TOPLEVEL."' AS text FROM #__fb_categories AS a WHERE parent='0' AND id<>'$row->id' ORDER BY ordering");
$categories = array_merge($categories, (array)$kunena_db->loadObjectList());
check_dberror("Unable to load categories.");
//build the select list:
$categoryList = JHTML::_('select.genericlist',$categories, 'parent', 'class="inputbox" size="1"', 'value', 'text', $row->parent);
}
else
{
$categoryList = JHTML::_('select.genericlist',$categories, 'parent', 'class="inputbox" size="1"', 'value', 'text', $row->parent);
}
$categoryList = showCategories($row->parent, "parent", "", "4");
// make a standard yes/no list
$yesno = array ();
$yesno[] = JHTML::_('select.option', '0', _ANN_NO);
$yesno[] = JHTML::_('select.option', '1', _ANN_YES);
// make a standard no/yes list
$noyes = array ();
$noyes[] = JHTML::_('select.option', '1', _ANN_YES);
$noyes[] = JHTML::_('select.option', '0', _ANN_NO);
//Create all kinds of Lists
$lists = array ();
$accessLists = array ();
//create custom group levels to include into the public group selectList
$pub_groups = array ();
$pub_groups[] = JHTML::_('select.option',0, _KUNENA_EVERYBODY);
$pub_groups[] = JHTML::_('select.option', -1, _KUNENA_ALLREGISTERED);
$pub_groups = array_merge($pub_groups, $kunena_acl->get_group_children_tree(null, _KUNENA_REGISTERED, true));
//create admin groups array for use in selectList:
$adm_groups = array ();
$adm_groups = array_merge($adm_groups, $kunena_acl->get_group_children_tree(null, _KUNENA_PUBLICBACKEND, true));
//create the access control list
$accessLists['pub_access'] = JHTML::_('select.genericlist',$pub_groups, 'pub_access', 'class="inputbox" size="4"', 'value', 'text', $row->pub_access);
$accessLists['admin_access'] = JHTML::_('select.genericlist',$adm_groups, 'admin_access', 'class="inputbox" size="4"', 'value', 'text', $row->admin_access);
$lists['pub_recurse'] = JHTML::_('select.genericlist',$yesno, 'pub_recurse', 'class="inputbox" size="1"', 'value', 'text', $row->pub_recurse);
$lists['admin_recurse'] = JHTML::_('select.genericlist',$yesno, 'admin_recurse', 'class="inputbox" size="1"', 'value', 'text', $row->admin_recurse);
$lists['forumLocked'] = JHTML::_('select.genericlist',$yesno, 'locked', 'class="inputbox" size="1"', 'value', 'text', $row->locked);
$lists['forumModerated'] = JHTML::_('select.genericlist',$noyes, 'moderated', 'class="inputbox" size="1"', 'value', 'text', $row->moderated);
$lists['forumReview'] = JHTML::_('select.genericlist',$yesno, 'review', 'class="inputbox" size="1"', 'value', 'text', $row->review);
//get a list of moderators, if forum/category is moderated
$moderatorList = array ();
if ($row->moderated == 1)
{
$kunena_db->setQuery("SELECT * FROM #__fb_moderation AS a LEFT JOIN #__users as u ON a.userid=u.id where a.catid=$row->id");
$moderatorList = $kunena_db->loadObjectList();
check_dberror("Unable to load moderator list.");
}
html_Kunena::editForum($row, $categoryList, $moderatorList, $lists, $accessLists, $option);
}
function saveForum($option)
{
$kunena_db = &JFactory::getDBO();
$app =& JFactory::getApplication();
$kunena_my = &JFactory::getUser();
$row = new fbForum($kunena_db);
$id = JRequest::getInt('id', 0, 'post');
if ($id) {
$row->load($id);
}
if (!$row->save($_POST, 'parent'))
{
echo "<script> alert('" . $row->getError() . "'); window.history.go(-1); </script>\n";
$app->close();
}
$row->reorder();
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na'");
$kunena_db->query() or trigger_dberror("Unable to update sessions.");
$app->redirect( JURI::base() ."index.php?option=$option&task=showAdministration");
}
function publishForum($cid = null, $publish = 1, $option)
{
$kunena_db = &JFactory::getDBO();
$app =& JFactory::getApplication();
$kunena_my = &JFactory::getUser();
if (!is_array($cid) || count($cid) < 1)
{
$action = $publish ? 'publish' : 'unpublish';
echo "<script> alert('" . _KUNENA_SELECTANITEMTO . " $action'); window.history.go(-1);</script>\n";
exit;
}
$cids = implode(',', $cid);
$kunena_db->setQuery("UPDATE #__fb_categories SET published='$publish'" . "\nWHERE id IN ($cids) AND (checked_out=0 OR (checked_out='$kunena_my->id'))");
$kunena_db->query() or trigger_dberror("Unable to update categories.");
if (count($cid) == 1)
{
$row = new fbForum($kunena_db);
$row->checkin($cid[0]);
}
// we must reset fbSession->allowed, when forum record was changed
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na'");
$kunena_db->query() or trigger_dberror("Unable to update sessions.");
$app->redirect( JURI::base() ."index.php?option=$option&task=showAdministration");
}
function deleteForum($cid = null, $option)
{
$kunena_db = &JFactory::getDBO();
$app =& JFactory::getApplication();
$kunena_my = &JFactory::getUser();
if (!is_array($cid) || count($cid) < 1)
{
$action = 'delete';
echo "<script> alert('" . _KUNENA_SELECTANITEMTO . " $action'); window.history.go(-1);</script>\n";
exit;
}
$cids = implode(',', $cid);
$kunena_db->setQuery("DELETE FROM #__fb_categories" . "\nWHERE id IN ($cids) AND (checked_out=0 OR (checked_out='$kunena_my->id'))");
$kunena_db->query() or trigger_dberror("Unable to delete categories.");
$kunena_db->setQuery("SELECT id, parent FROM #__fb_messages where catid in ($cids)");
$mesList = $kunena_db->loadObjectList();
check_dberror("Unable to load messages.");
if (count($mesList) > 0)
{
foreach ($mesList as $ml)
{
$kunena_db->setQuery("DELETE FROM #__fb_messages WHERE id = $ml->id");
$kunena_db->query() or trigger_dberror("Unable to delete messages.");
$kunena_db->setQuery("DELETE FROM #__fb_messages_text WHERE mesid=$ml->id");
$kunena_db->query() or trigger_dberror("Unable to delete message text.");
//and clear up all subscriptions as well
if ($ml->parent == 0)
{ //this was a topic message to which could have been subscribed
$kunena_db->setQuery("DELETE FROM #__fb_subscriptions WHERE thread=$ml->id");
$kunena_db->query() or trigger_dberror("Unable to delete subscriptions.");
}
}
}
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na'");
$kunena_db->query() or trigger_dberror("Unable to update sessions.");
$app->redirect( JURI::base() ."index.php?option=$option&task=showAdministration");
}
function cancelForum($option)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$row = new fbForum($kunena_db);
$row->bind($_POST);
$row->checkin();
$app->redirect( JURI::base() ."index.php?option=$option&task=showAdministration");
}
function orderForum($uid, $inc, $option)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$row = new fbForum($kunena_db);
$row->load($uid);
// Ensure that we have the right ordering
$where = $row->_db->nameQuote('parent') .'='. $row->_db->quote($row->parent);
$row->reorder($where);
$row->load($uid);
$row->move($inc, $where);
$app->redirect( JURI::base() ."index.php?option=$option&task=showAdministration");
}
//===============================
// Config Functions
//===============================
function showConfig($option)
{
$kunena_db = &JFactory::getDBO();
$fbConfig =& CKunenaConfig::getInstance();
$lists = array ();
// the default page when entering Kunena
$defpagelist = array ();
$defpagelist[] = JHTML::_('select.option', 'recent', _COM_A_FBDEFAULT_PAGE_RECENT);
$defpagelist[] = JHTML::_('select.option', 'my', _COM_A_FBDEFAULT_PAGE_MY);
$defpagelist[] = JHTML::_('select.option', 'categories',_COM_A_FBDEFAULT_PAGE_CATEGORIES);
// build the html select list
$lists['fbdefaultpage'] = JHTML::_('select.genericlist', $defpagelist ,'cfg_fbdefaultpage', 'class="inputbox" size="1" ','value', 'text', $fbConfig->fbdefaultpage);
// build the html select list
$rsslist = array ();
$rsslist[] = JHTML::_('select.option', 'thread',_COM_A_RSS_BY_THREAD);
$rsslist[] = JHTML::_('select.option', 'post',_COM_A_RSS_BY_POST);
// build the html select list
$lists['rsstype'] = JHTML::_('select.genericlist', $rsslist ,'cfg_rsstype', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->rsstype);
$rsshistorylist = array ();
$rsshistorylist[] =JHTML::_('select.option', 'week',_COM_A_RSS_HISTORY_WEEK);
$rsshistorylist[] =JHTML::_('select.option', 'month',_COM_A_RSS_HISTORY_MONTH);
$rsshistorylist[] =JHTML::_('select.option', 'year',_COM_A_RSS_HISTORY_YEAR);
// build the html select list
$lists['rsshistory'] = JHTML::_('select.genericlist', $rsshistorylist ,'cfg_rsshistory', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->rsshistory);
// source of avatar picture
$avlist = array ();
$avlist[] = JHTML::_('select.option', 'fb',_KUNENA_KUNENA);
$avlist[] = JHTML::_('select.option', 'cb',_KUNENA_CB);
$avlist[] = JHTML::_('select.option', 'jomsocial',_KUNENA_JOMSOCIAL);
$avlist[] = JHTML::_('select.option', 'clexuspm',_KUNENA_CLEXUS);
$avlist[] = JHTML::_('select.option', 'aup', _KUNENA_AUP_ALPHAUSERPOINTS); // INTEGRATION ALPHAUSERPOINTS
// build the html select list
$lists['avatar_src'] = JHTML::_('select.genericlist', $avlist,'cfg_avatar_src', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->avatar_src);
// private messaging system to use
$pmlist = array ();
$pmlist[] = JHTML::_('select.option', 'no',_COM_A_NO);
$pmlist[] = JHTML::_('select.option', 'cb',_KUNENA_CB);
$pmlist[] = JHTML::_('select.option', 'jomsocial',_KUNENA_JOMSOCIAL);
$pmlist[] = JHTML::_('select.option', 'pms',_KUNENA_MYPMS);
$pmlist[] = JHTML::_('select.option', 'pms',_KUNENA_MYPMS);
$pmlist[] = JHTML::_('select.option', 'clexuspm',_KUNENA_CLEXUS);
$pmlist[] = JHTML::_('select.option', 'uddeim',_KUNENA_UDDEIM);
$pmlist[] = JHTML::_('select.option', 'jim',_KUNENA_JIM);
$pmlist[] = JHTML::_('select.option', 'missus',_KUNENA_MISSUS);
$lists['pm_component'] = JHTML::_('select.genericlist', $pmlist, 'cfg_pm_component', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->pm_component);
//redundant $lists['pm_component'] = JHTML::_('select.genericlist',$pmlist, 'cfg_pm_component', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->pm_component);
// Profile select
$prflist = array ();
$prflist[] = JHTML::_('select.option', 'fb',_KUNENA_KUNENA);
$prflist[] = JHTML::_('select.option', 'cb',_KUNENA_CB);
$prflist[] = JHTML::_('select.option', 'jomsocial',_KUNENA_JOMSOCIAL);
$prflist[] = JHTML::_('select.option', 'clexuspm',_KUNENA_CLEXUS);
$prflist[] = JHTML::_('select.option', 'aup', _KUNENA_AUP_ALPHAUSERPOINTS); // INTEGRATION ALPHAUSERPOINTS
$lists['fb_profile'] = JHTML::_('select.genericlist', $prflist, 'cfg_fb_profile', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->fb_profile);
// build the html select list
// make a standard yes/no list
$yesno = array ();
$yesno[] = JHTML::_('select.option','0', _COM_A_NO);
$yesno[] = JHTML::_('select.option', '1', _COM_A_YES);
/* Build the templates list*/
// This function was modified from the one posted to PHP.net by rockinmusicgv
// It is available under the readdir() entry in the PHP online manual
//function get_dirs($directory, $select_name, $selected = "") {
$listitems[] = JHTML::_('select.option', '1',_KUNENA_SELECTTEMPLATE);
if ($dir = @opendir(KUNENA_PATH_TEMPLATE))
{
while (($file = readdir($dir)) !== false)
{
if ($file != ".." && $file != ".")
{
if (is_dir(KUNENA_PATH_TEMPLATE .DS. $file))
{
if (!($file[0] == '.') && ($file != 'default' || $fbConfig->template == 'default') && is_file(KUNENA_PATH_TEMPLATE .DS. $file .DS. 'kunena.forum.css')) {
$templatelist[] = $file;
}
if (!($file[0] == '.') && ($file != 'default' || $fbConfig->templateimagepath == 'default') && is_dir(KUNENA_PATH_TEMPLATE .DS. $file .DS. 'images' .DS. 'english')) {
$imagesetlist[] = $file;
}
}
}
}
closedir ($dir);
}
asort ($templatelist);
asort ($imagesetlist);
while (list($key, $val) = each($templatelist)) {
$templatelistitems[] = JHTML::_('select.option', $val, $val);
}
while (list($key, $val) = each($imagesetlist)) {
$imagesetlistitems[] = JHTML::_('select.option', $val, $val);
}
$lists['jmambot'] = JHTML::_('select.genericlist', $yesno, 'cfg_jmambot', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->jmambot);
$lists['disemoticons'] = JHTML::_('select.genericlist', $yesno, 'cfg_disemoticons', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->disemoticons);
$lists['template'] = JHTML::_('select.genericlist', $templatelistitems, 'cfg_template', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->template);
$lists['templateimagepath'] = JHTML::_('select.genericlist', $imagesetlistitems, 'cfg_templateimagepath', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->templateimagepath);
$lists['regonly'] = JHTML::_('select.genericlist', $yesno, 'cfg_regonly', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->regonly);
$lists['board_offline'] = JHTML::_('select.genericlist', $yesno, 'cfg_board_offline', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->board_offline);
$lists['pubwrite'] = JHTML::_('select.genericlist', $yesno, 'cfg_pubwrite', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->pubwrite);
$lists['useredit'] = JHTML::_('select.genericlist', $yesno, 'cfg_useredit', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->useredit);
$lists['showhistory'] = JHTML::_('select.genericlist', $yesno, 'cfg_showhistory', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showhistory);
$lists['joomlastyle'] = JHTML::_('select.genericlist', $yesno,'cfg_joomlastyle', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->joomlastyle);
$lists['showannouncement'] = JHTML::_('select.genericlist', $yesno,'cfg_showannouncement', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showannouncement);
$lists['avataroncat'] = JHTML::_('select.genericlist', $yesno,'cfg_avataroncat', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->avataroncat);
$lists['showlatest'] = JHTML::_('select.genericlist', $yesno,'cfg_showlatest', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showlatest);
$lists['latestsinglesubject'] = JHTML::_('select.genericlist', $yesno,'cfg_latestsinglesubject', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->latestsinglesubject);
$lists['latestreplysubject'] = JHTML::_('select.genericlist', $yesno,'cfg_latestreplysubject', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->latestreplysubject);
$lists['latestshowdate'] = JHTML::_('select.genericlist', $yesno,'cfg_latestshowdate', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->latestshowdate);
$lists['showchildcaticon'] = JHTML::_('select.genericlist', $yesno,'cfg_showchildcaticon', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showchildcaticon);
$lists['latestshowhits'] = JHTML::_('select.genericlist', $yesno,'cfg_latestshowhits', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->latestshowhits);
$lists['showuserstats'] = JHTML::_('select.genericlist', $yesno, 'cfg_showuserstats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showuserstats);
$lists['showwhoisonline'] = JHTML::_('select.genericlist', $yesno, 'cfg_showwhoisonline', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showwhoisonline);
$lists['showpopsubjectstats'] = JHTML::_('select.genericlist', $yesno, 'cfg_showpopsubjectstats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showpopsubjectstats);
$lists['showgenstats'] = JHTML::_('select.genericlist', $yesno, 'cfg_showgenstats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showgenstats);
$lists['showpopuserstats'] = JHTML::_('select.genericlist', $yesno, 'cfg_showpopuserstats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showpopuserstats);
$lists['allowsubscriptions'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowsubscriptions', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowsubscriptions);
$lists['subscriptionschecked'] = JHTML::_('select.genericlist', $yesno, 'cfg_subscriptionschecked', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->subscriptionschecked);
$lists['allowfavorites'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowfavorites', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowfavorites);
$lists['mailmod'] = JHTML::_('select.genericlist', $yesno, 'cfg_mailmod', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->mailmod);
$lists['mailadmin'] = JHTML::_('select.genericlist', $yesno, 'cfg_mailadmin', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->mailadmin);
$lists['showemail'] = JHTML::_('select.genericlist', $yesno, 'cfg_showemail', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showemail);
$lists['askemail'] = JHTML::_('select.genericlist', $yesno, 'cfg_askemail', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->askemail);
$lists['changename'] = JHTML::_('select.genericlist', $yesno, 'cfg_changename', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->changename);
$lists['allowavatar'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowavatar', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowavatar);
$lists['allowavatarupload'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowavatarupload', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowavatarupload);
$lists['allowavatargallery'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowavatargallery', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowavatargallery);
$lists['avatar_src'] = JHTML::_('select.genericlist', $avlist, 'cfg_avatar_src', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->avatar_src);
$ip_opt[] = JHTML::_('select.option', 'gd2', 'GD2');
$ip_opt[] = JHTML::_('select.option', 'gd1', 'GD1');
$ip_opt[] = JHTML::_('select.option', 'none', _KUNENA_IMAGE_PROCESSOR_NONE);
$lists['imageprocessor'] = JHTML::_('select.genericlist', $ip_opt, 'cfg_imageprocessor', 'class="inputbox"', 'value', 'text', $fbConfig->imageprocessor );
$lists['showstats'] = JHTML::_('select.genericlist', $yesno, 'cfg_showstats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showstats);
$lists['showranking'] = JHTML::_('select.genericlist', $yesno, 'cfg_showranking', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showranking);
$lists['rankimages'] = JHTML::_('select.genericlist', $yesno, 'cfg_rankimages', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->rankimages);
$lists['username'] = JHTML::_('select.genericlist', $yesno, 'cfg_username', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->username);
$lists['shownew'] = JHTML::_('select.genericlist', $yesno, 'cfg_shownew', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->shownew);
$lists['allowimageupload'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowimageupload', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowimageupload);
$lists['allowimageregupload'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowimageregupload', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowimageregupload);
$lists['allowfileupload'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowfileupload', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowfileupload);
$lists['allowfileregupload'] = JHTML::_('select.genericlist', $yesno, 'cfg_allowfileregupload', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->allowfileregupload);
$lists['editmarkup'] = JHTML::_('select.genericlist', $yesno, 'cfg_editmarkup', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->editmarkup);
$lists['discussbot'] = JHTML::_('select.genericlist', $yesno, 'cfg_discussbot', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->discussbot);
$lists['enablerss'] = JHTML::_('select.genericlist', $yesno, 'cfg_enablerss', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->enablerss);
$lists['poststats'] = JHTML::_('select.genericlist', $yesno, 'cfg_poststats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->poststats);
$lists['showkarma'] = JHTML::_('select.genericlist', $yesno, 'cfg_showkarma', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showkarma);
$lists['cb_profile'] = JHTML::_('select.genericlist', $yesno, 'cfg_cb_profile', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->cb_profile);
$lists['enablepdf'] = JHTML::_('select.genericlist', $yesno, 'cfg_enablepdf', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->enablepdf);
$lists['enablerulespage'] = JHTML::_('select.genericlist', $yesno, 'cfg_enablerulespage', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->enablerulespage);
$lists['rules_infb'] = JHTML::_('select.genericlist', $yesno, 'cfg_rules_infb', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->rules_infb);
$lists['enablehelppage'] = JHTML::_('select.genericlist', $yesno, 'cfg_enablehelppage', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->enablehelppage);
$lists['help_infb'] = JHTML::_('select.genericlist', $yesno, 'cfg_help_infb', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->help_infb);
$lists['enableforumjump'] = JHTML::_('select.genericlist', $yesno, 'cfg_enableforumjump', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->enableforumjump);
$lists['userlist_online'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_online', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_online);
$lists['userlist_avatar'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_avatar', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_avatar);
$lists['userlist_name'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_name', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_name);
$lists['userlist_username'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_username', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_username);
$lists['userlist_posts'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_posts', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_posts);
$lists['userlist_karma'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_karma', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_karma);
$lists['userlist_email'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_email', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_email);
$lists['userlist_usertype'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_usertype', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_usertype);
$lists['userlist_joindate'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_joindate', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_joindate);
$lists['userlist_lastvisitdate'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_lastvisitdate', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_lastvisitdate);
$lists['userlist_userhits'] = JHTML::_('select.genericlist', $yesno, 'cfg_userlist_userhits', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->userlist_userhits);
$lists['usernamechange'] = JHTML::_('select.genericlist', $yesno, 'cfg_usernamechange', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->usernamechange);
$lists['reportmsg'] = JHTML::_('select.genericlist', $yesno, 'cfg_reportmsg', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->reportmsg);
$lists['captcha'] = JHTML::_('select.genericlist', $yesno, 'cfg_captcha', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->captcha);
$lists['mailfull'] = JHTML::_('select.genericlist', $yesno, 'cfg_mailfull', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->mailfull);
// New for 1.0.5
$lists['showspoilertag'] = JHTML::_('select.genericlist', $yesno, 'cfg_showspoilertag', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showspoilertag);
$lists['showvideotag'] = JHTML::_('select.genericlist', $yesno, 'cfg_showvideotag', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showvideotag);
$lists['showebaytag'] = JHTML::_('select.genericlist', $yesno, 'cfg_showebaytag', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->showebaytag);
$lists['trimlongurls'] = JHTML::_('select.genericlist', $yesno, 'cfg_trimlongurls', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->trimlongurls);
$lists['autoembedyoutube'] = JHTML::_('select.genericlist', $yesno, 'cfg_autoembedyoutube', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->autoembedyoutube);
$lists['autoembedebay'] = JHTML::_('select.genericlist', $yesno, 'cfg_autoembedebay', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->autoembedebay);
$lists['highlightcode'] = JHTML::_('select.genericlist', $yesno, 'cfg_highlightcode', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->highlightcode);
// New for 1.5.7 -> integration AlphaUserPoints
$lists['alphauserpoints'] = JHTML::_('select.genericlist', $yesno, 'cfg_alphauserpoints', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->alphauserpoints);
$lists['alphauserpointsrules'] = JHTML::_('select.genericlist', $yesno, 'cfg_alphauserpointsrules', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->alphauserpointsrules);
// New for 1.5.8 -> SEF
$lists['sef'] = JHTML::_('select.genericlist', $yesno, 'cfg_sef', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->sef);
$lists['sefcats'] = JHTML::_('select.genericlist', $yesno, 'cfg_sefcats', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->sefcats);
$lists['sefutf8'] = JHTML::_('select.genericlist', $yesno, 'cfg_sefutf8', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->sefutf8);
// New for 1.5.10: hide ip
$lists['hide_ip'] = JHTML::_('select.genericlist', $yesno, 'cfg_hide_ip', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->hide_ip);
//New for 1.5.10: Joomsocial Activity Stream Integration disable/enable
$lists['js_actstr_integration'] = JHTML::_('select.genericlist', $yesno, 'cfg_js_actstr_integration', 'class="inputbox" size="1"', 'value', 'text', $fbConfig->js_actstr_integration);
html_Kunena::showConfig($fbConfig, $lists, $option);
}
function saveConfig($option)
{
$app =& JFactory::getApplication();
$fbConfig =& CKunenaConfig::getInstance();
$kunena_db = &JFactory::getDBO();
foreach ($_POST as $postsetting => $postvalue)
{
if (strpos($postsetting, 'cfg_') === 0)
{
//remove cfg_ and force lower case
$postname = strtolower(substr($postsetting, 4));
$postvalue = addslashes($postvalue);
// No matter what got posted, we only store config parameters defined
// in the config class. Anything else posted gets ignored.
if(array_key_exists($postname , $fbConfig->GetClassVars()))
{
if (is_numeric($postvalue))
{
eval ("\$fbConfig->".$postname." = ".$postvalue.";");
}
else
{
// Rest is treaded as strings
eval ("\$fbConfig->".$postname." = '".$postvalue."';");
}
}
else
{
// This really should not happen if assertions are enable
// fail it and display the current scope of variables for debugging.
// echo debug_vars(get_defined_vars());
trigger_error ('Unknown configuration variable posted.');
assert(0);
}
}
}
$fbConfig->backup();
$fbConfig->remove();
$fbConfig->create();
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na'");
$kunena_db->query() or trigger_dberror("Unable to update sessions.");
$app->redirect( JURI::base() . "index.php?option=$option&task=showconfig", _KUNENA_CONFIGSAVED);
}
function showInstructions($kunena_db, $option, $lang) {
$kunena_db = &JFactory::getDBO();
html_Kunena::showInstructions($kunena_db, $option, $lang);
}
//===============================
// CSS functions
//===============================
function showCss($option)
{
require_once(KUNENA_PATH_LIB .DS. 'kunena.file.class.php');
$fbConfig =& CKunenaConfig::getInstance();
$file = KUNENA_PATH_TEMPLATE .DS. $fbConfig->template .DS. "kunena.forum.css";
$permission = CKunenaPath::isWritable($file);
if (!$permission)
{
echo "<center><h1><font color=red>" . _KUNENA_WARNING . "</font></h1><br />";
echo "<b>" . _KUNENA_CFC_FILENAME . ": " . $file . "</b><br />";
echo "<b>" . _KUNENA_CHMOD1 . "</b></center><br /><br />";
}
html_Kunena::showCss($file, $option);
}
function saveCss($file, $csscontent, $option)
{
require_once(KUNENA_PATH_LIB .DS. 'kunena.file.class.php');
$app =& JFactory::getApplication();
$tmpstr = _KUNENA_CSS_SAVE;
$tmpstr = str_replace("%file%", $file, $tmpstr);
echo $tmpstr;
if (CKunenaFile::write($file, stripslashes($csscontent)))
{
$app->redirect( JURI::base() ."index.php?option=$option&task=showCss", _KUNENA_CFC_SAVED);
}
else {
$app->redirect( JURI::base() ."index.php?option=$option&task=showCss", _KUNENA_CFC_NOTSAVED);
}
}
//===============================
// Moderator Functions
//===============================
function newModerator($option, $id = null)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
//die ("New Moderator");
//$limit = intval(JRequest::getVar( 'limit', 10));
//$limitstart = intval(JRequest::getVar( 'limitstart', 0));
$limit = $app->getUserStateFromRequest("global.list.limit", 'limit', $app->getCfg('list_limit'), 'int');
$limitstart = $app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int');
$kunena_db->setQuery("SELECT COUNT(*) FROM #__users AS a" . "\n LEFT JOIN #__fb_users AS b" . "\n ON a.id=b.userid where b.moderator=1");
$kunena_db->query() or trigger_dberror('Unable to load moderators w/o limit.');
$total = $kunena_db->loadResult();
if ($limitstart >= $total) $limitstart = 0;
if ($limit == 0 || $limit > 100) $limit = 100;
$kunena_db->setQuery("SELECT * FROM #__users AS a" . "\n LEFT JOIN #__fb_users AS b" . "\n ON a.id=b.userid" . "\n WHERE b.moderator=1", $limitstart, $limit);
$userList = $kunena_db->loadObjectList();
check_dberror('Unable to load moderators.');
$countUL = count($userList);
jimport('joomla.html.pagination');
$pageNav = new JPagination($total, $limitstart, $limit);
//$id = intval( JRequest::getVar('id') );
//get forum name
$forumName = '';
$kunena_db->setQuery("select name from #__fb_categories where id=$id");
$kunena_db->query() or trigger_dberror('Unable to load forum name.');
$forumName = $kunena_db->loadResult();
//get forum moderators
$kunena_db->setQuery("select userid from #__fb_moderation where catid=$id");
$moderatorList = $kunena_db->loadObjectList();
check_dberror('Unable to load moderator.');
$moderators = 0;
$modIDs[] = array ();
if (count($moderatorList) > 0)
{
foreach ($moderatorList as $ml)
{
$modIDs[] = $ml->userid;
}
$moderators = 1;
}
else
{
$moderators = 0;
}
html_Kunena::newModerator($option, $id, $moderators, $modIDs, $forumName, $userList, $countUL, $pageNav);
}
function addModerator($option, $id, $cid = null, $publish = 1)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
global $kunena_my;
$numcid = count($cid);
$action = "";
if ($publish == 1)
{
$action = 'add';
}
else {
$action = 'remove';
}
if (!is_array($cid) || count($cid) < 1)
{
echo "<script> alert('" . _KUNENA_SELECTMODTO . " $action'); window.history.go(-1);</script>\n";
exit;
}
if ($action == 'add')
{
for ($i = 0, $n = count($cid); $i < $n; $i++)
{
$kunena_db->setQuery("INSERT INTO #__fb_moderation set catid='$id', userid='$cid[$i]'");
$kunena_db->query() or trigger_dberror("Unable to insert moderator.");
}
}
else
{
for ($i = 0, $n = count($cid); $i < $n; $i++)
{
$kunena_db->setQuery("DELETE FROM #__fb_moderation WHERE catid='$id' and userid='$cid[$i]'");
$kunena_db->query() or trigger_dberror("Unable to delete moderator.");
}
}
$row = new fbForum($kunena_db);
$row->checkin($id);
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na'");
$kunena_db->query() or trigger_dberror("Unable to update sessions.");
$app->redirect( JURI::base() ."index.php?option=$option&task=edit2&uid=" . $id);
}
//===============================
// User Profile functions
//===============================
function showProfiles($kunena_db, $option, $lang, $order)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
//$limit = intval(JRequest::getVar( 'limit', 10));
//$limitstart = intval(JRequest::getVar( 'limitstart', 0));
$limit = $app->getUserStateFromRequest("global.list.limit", 'limit', $app->getCfg('list_limit'), 'int');
$limitstart = $app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int');
$search = $app->getUserStateFromRequest("{$option}.search", 'search', '', 'string');
$search = $kunena_db->getEscaped(trim(strtolower($search)));
$where = array ();
if (isset($search) && $search != "") {
$where[] = "(u.username LIKE '%$search%' OR u.email LIKE '%$search%' OR u.name LIKE '%$search%')";
}
$kunena_db->setQuery("SELECT COUNT(*) FROM #__fb_users AS sbu" . "\n INNER JOIN #__users AS u" . "\n ON sbu.userid=u.id" . (count($where) ? "\nWHERE " . implode(' AND ', $where) : ""));
$kunena_db->query() or trigger_dberror('Unable to load user profiles w/o limits.');
$total = $kunena_db->loadResult();
if ($limitstart >= $total) $limitstart = 0;
if ($limit == 0 || $limit > 100) $limit = 100;
if ($order == 1)
{
$kunena_db->setQuery(
"SELECT * FROM #__fb_users AS sbu" . "\n INNER JOIN #__users AS u" . "\n ON sbu.userid=u.id " . (count($where) ? "\nWHERE " . implode(' AND ', $where) : "") . "\n ORDER BY sbu.moderator DESC", $limitstart, $limit);
}
else if ($order == 2)
{
$kunena_db->setQuery("SELECT * FROM #__fb_users AS sbu" . "\n INNER JOIN #__users AS u " . "\n ON sbu.userid=u.id " . (count($where) ? "\nWHERE " . implode(' AND ', $where) : "") . "\n ORDER BY u.name ASC ", $limitstart, $limit);
} else if ($order == 3) {
$kunena_db->setQuery("SELECT * FROM #__fb_users AS sbu" . "\n INNER JOIN #__users AS u " . "\n ON sbu.userid=u.id " . (count($where) ? "\nWHERE " . implode(' AND ', $where) : "") . "\n ORDER BY u.username ASC", $limitstart, $limit);
} else if ($order < 1) {
$kunena_db->setQuery("SELECT * FROM #__fb_users AS sbu " . "\n INNER JOIN #__users AS u" . "\n ON sbu.userid=u.id " . (count($where) ? "\nWHERE " . implode(' AND ', $where) : "") . "\n ORDER BY sbu.userid", $limitstart, $limit);
}
$profileList = $kunena_db->loadObjectList();
check_dberror('Unable to load user profiles.');
$countPL = count($profileList);
jimport('joomla.html.pagination');
$pageNavSP = new JPagination( $total, $limitstart, $limit );
html_Kunena::showProfiles($option, $lang, $profileList, $countPL, $pageNavSP, $order, $search);
}
function editUserProfile($uid)
{
if (empty($uid[0])) {
echo _KUNENA_PROFILE_NO_USER;
return;
}
$kunena_db = &JFactory::getDBO();
$kunena_acl = &JFactory::getACL();
$kunena_db->setQuery("SELECT * FROM #__fb_users LEFT JOIN #__users on #__users.id=#__fb_users.userid WHERE userid=$uid[0]");
$userDetails = $kunena_db->loadObjectList();
check_dberror('Unable to load user profile.');
$user = $userDetails[0];
//Mambo userids are unique, so we don't worry about that
$prefview = $user->view;
$ordering = $user->ordering;
$moderator = $user->moderator;
$userRank = $user->rank;
//check to see if this is an administrator
$result = '';
//$kunena_db->setQuery("select usertype from #__users where id=$uid[0]");
//$result=$kunena_db->loadResult();
$result = $kunena_acl->getAroGroup($uid[0]);
//grab all special ranks
$kunena_db->setQuery("SELECT * FROM #__fb_ranks WHERE rank_special = '1'");
$specialRanks = $kunena_db->loadObjectList();
check_dberror('Unable to load special ranks.');
//build select list options
$yesnoRank[] = JHTML::_('select.option','0', _KUNENA_RANK_NO_ASSIGNED);
foreach ($specialRanks as $ranks)
{
$yesnoRank[] = JHTML::_('select.option',$ranks->rank_id, $ranks->rank_title);
}
//build special ranks select list
$selectRank = JHTML::_('select.genericlist',$yesnoRank, 'newrank', 'class="inputbox" size="5"', 'value', 'text', $userRank);
// make the select list for the view type
$yesno[] = JHTML::_('select.option','flat', _COM_A_FLAT);
$yesno[] = JHTML::_('select.option','threaded', _COM_A_THREADED);
// build the html select list
$selectPref = JHTML::_('select.genericlist',$yesno, 'newview', 'class="inputbox" size="2"', 'value', 'text', $prefview);
// make the select list for the moderator flag
$yesnoMod[] = JHTML::_('select.option','1', _ANN_YES);
$yesnoMod[] = JHTML::_('select.option','0', _ANN_NO);
// build the html select list
$selectMod = JHTML::_('select.genericlist',$yesnoMod, 'moderator', 'class="inputbox" size="2"', 'value', 'text', $moderator);
// make the select list for the moderator flag
$yesnoOrder[] = JHTML::_('select.option','0', _USER_ORDER_ASC);
$yesnoOrder[] = JHTML::_('select.option','1', _USER_ORDER_DESC);
// build the html select list
$selectOrder = JHTML::_('select.genericlist',$yesnoOrder, 'neworder', 'class="inputbox" size="2"', 'value', 'text', $ordering);
//get all subscriptions for this user
$kunena_db->setQuery("select thread from #__fb_subscriptions where userid=$uid[0]");
$subslist = $kunena_db->loadObjectList();
check_dberror('Unable to load subscriptions for user.');
//get all moderation category ids for this user
$kunena_db->setQuery("select catid from #__fb_moderation where userid=". $uid[0]);
$_modCats = $kunena_db->loadResultArray();
check_dberror('Unable to moderation category ids for user.');
$__modCats = array();
foreach ($_modCats as $_v) {
$__modCats[] = JHTML::_('select.option', $_v );
}
$modCats = KUNENA_GetAvailableModCats($__modCats);
html_Kunena::editUserProfile($user, $subslist, $selectRank, $selectPref, $selectMod, $selectOrder, $uid[0], $modCats);
}
function saveUserProfile($option)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$newview = JRequest::getVar( 'newview');
$newrank = JRequest::getVar( 'newrank');
$signature = JRequest::getVar( 'message');
$deleteSig = JRequest::getVar( 'deleteSig');
$moderator = JRequest::getVar( 'moderator');
$uid = JRequest::getVar( 'uid');
$avatar = JRequest::getVar( 'avatar');
$deleteAvatar = JRequest::getVar( 'deleteAvatar');
$neworder = JRequest::getVar( 'neworder');
$modCatids = JRequest::getVar( 'catid', array());
if ($deleteSig == 1) {
$signature = "";
}
$signature = addslashes($signature);
$avatar = '';
if ($deleteAvatar == 1) {
$avatar = ",avatar=''";
}
$kunena_db->setQuery("UPDATE #__fb_users set signature='$signature', view='$newview',moderator='$moderator', ordering='$neworder', rank='$newrank' $avatar where userid=$uid");
$kunena_db->query() or trigger_dberror("Unable to update signature.");
//delete all moderator traces before anyway
$kunena_db->setQuery("delete from #__fb_moderation where userid=$uid");
$kunena_db->query() or trigger_dberror("Unable to delete moderator.");
//if there are moderatored forums, add them all
if ($moderator == 1)
{
if (count($modCatids) > 0)
{
foreach ($modCatids as $c)
{
$kunena_db->setQuery("INSERT INTO #__fb_moderation set catid='$c', userid='$uid'");
$kunena_db->query() or trigger_dberror("Unable to insert moderator.");
}
}
}
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na' WHERE userid='$uid'");
$kunena_db->query() or trigger_dberror("Unable to update sessions.");
$app->redirect( JURI::base() ."index.php?option=com_kunena&task=showprofiles");
}
//===============================
// Prune Forum functions
//===============================
function pruneforum($kunena_db, $option)
{
$forums_list = array ();
//get forum list; locked forums are excluded from pruning
$kunena_db->setQuery("SELECT a.id as value, a.name as text" . "\nFROM #__fb_categories AS a" . "\nWHERE a.parent != '0'" . "\nAND a.locked != '1'" . "\nORDER BY parent, ordering");
//get all subscriptions for this user
$forums_list = $kunena_db->loadObjectList();
check_dberror("Unable to load unlocked forums.");
$forumList['forum'] = JHTML::_('select.genericlist',$forums_list, 'prune_forum', 'class="inputbox" size="4"', 'value', 'text', '');
html_Kunena::pruneforum($option, $forumList);
}
function doprune($kunena_db, $option)
{
$app =& JFactory::getApplication();
$catid = intval(JRequest::getVar( 'prune_forum', -1));
$deleted = 0;
if ($catid == -1)
{
echo "<script> alert('" . _KUNENA_CHOOSEFORUMTOPRUNE . "'); window.history.go(-1); </script>\n";
$app->close();
}
$prune_days = intval(JRequest::getVar( 'prune_days', 0));
//get the thread list for this forum
$kunena_db->setQuery("SELECT DISTINCT a.thread AS thread, max(a.time) AS lastpost, c.locked AS locked " . "\n FROM #__fb_messages AS a" . "\n JOIN #__fb_categories AS b ON a.catid=b.id " . "\n JOIN #__fb_messages AS c ON a.thread=c.thread"
. "\n where a.catid=$catid " . "\n and b.locked != 1 " . "\n and a.locked != 1 " . "\n and c.locked != 1 " . "\n and c.parent = 0 " . "\n and c.ordering != 1 " . "\n group by thread");
$threadlist = $kunena_db->loadObjectList();
check_dberror("Unable to load thread list.");
// Convert days to seconds for timestamp functions...
$prune_date = CKunenaTools::fbGetInternalTime() - ($prune_days * 86400);
if (count($threadlist) > 0)
{
foreach ($threadlist as $tl)
{
//check if thread is eligible for pruning
if ($tl->lastpost < $prune_date)
{
//get the id's for all posts belonging to this thread
$kunena_db->setQuery("SELECT id from #__fb_messages WHERE thread=$tl->thread");
$idlist = $kunena_db->loadObjectList();
check_dberror("Unable to load thread messages.");
if (count($idlist) > 0)
{
foreach ($idlist as $id)
{
//prune all messages belonging to the thread
$kunena_db->setQuery("DELETE FROM #__fb_messages WHERE id=$id->id");
$kunena_db->query() or trigger_dberror("Unable to delete messages.");
$kunena_db->setQuery("DELETE FROM #__fb_messages_text WHERE mesid=$id->id");
$kunena_db->query() or trigger_dberror("Unable to delete message texts.");
//delete all attachments
$kunena_db->setQuery("SELECT filelocation FROM #__fb_attachments WHERE mesid=$id->id");
$fileList = $kunena_db->loadObjectList();
check_dberror("Unable to load attachments.");
if (count($fileList) > 0)
{
foreach ($fileList as $fl) {
unlink ($fl->filelocation);
}
$kunena_db->setQuery("DELETE FROM #__fb_attachments WHERE mesid=$id->id");
$kunena_db->query() or trigger_dberror("Unable to delete attachments.");
}
$deleted++;
}
}
}
//clean all subscriptions to these deleted threads
$kunena_db->setQuery("DELETE FROM #__fb_subscriptions WHERE thread=$tl->thread");
$kunena_db->query() or trigger_dberror("Unable to delete subscriptions.");
}
}
$app->redirect( JURI::base() ."index.php?option=$option&task=pruneforum", "" . _KUNENA_FORUMPRUNEDFOR . " " . $prune_days . " " . _KUNENA_PRUNEDAYS . "; " . _KUNENA_PRUNEDELETED . $deleted . " " . _KUNENA_PRUNETHREADS);
}
//===============================
// Sync users
//===============================
function syncusers($kunena_db, $option) {
html_Kunena::syncusers($option);
}
function douserssync($kunena_db, $option)
{
$usercache = JRequest::getBool('usercache', 0);
$useradd = JRequest::getBool('useradd', 0);
$userdel = JRequest::getBool('userdel', 0);
$userrename = JRequest::getBool('userrename', 0);
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
if ($usercache)
{
//reset access rights
$kunena_db->setQuery("UPDATE #__fb_sessions SET allowed='na'");
$kunena_db->query();
check_dberror("Unable to update sessions.");
$app->enqueueMessage(_KUNENA_SYNC_USERS_DO_CACHE);
}
if ($useradd)
{
$kunena_db->setQuery("INSERT INTO #__fb_users (userid) SELECT a.id FROM #__users AS a LEFT JOIN #__fb_users AS b ON b.userid=a.id WHERE b.userid IS NULL");
$kunena_db->query();
check_dberror('Unable to create user profiles.');
$app->enqueueMessage(_KUNENA_SYNC_USERS_DO_ADD.' '.$kunena_db->getAffectedRows());
}
if ($userdel)
{
$kunena_db->setQuery("DELETE a FROM #__fb_users AS a LEFT JOIN #__users AS b ON a.userid=b.id WHERE b.username IS NULL");
$kunena_db->query();
check_dberror("Unable to delete user profiles.");
$app->enqueueMessage(_KUNENA_SYNC_USERS_DO_DEL.' '.$kunena_db->getAffectedRows());
}
if ($userrename)
{
$cnt = CKunenaTools::updateNameInfo();
$app->enqueueMessage(_KUNENA_SYNC_USERS_DO_RENAME." $cnt");
}
$app->redirect( JURI::base() ."index.php?option=$option&task=syncusers");
}
//===============================
// Uploaded Images browser
//===============================
function browseUploaded($kunena_db, $option, $type)
{
$kunena_db = &JFactory::getDBO();
if ($type)
{ //we're doing images
$dir = @opendir(KUNENA_PATH_UPLOADED .DS. 'images');
$uploaded_path = KUNENA_PATH_UPLOADED .DS. 'images';
}
else
{ //we're doing regular files
$dir = @opendir(KUNENA_PATH_UPLOADED .DS. 'files');
$uploaded_path = KUNENA_PATH_UPLOADED .DS. 'files';
}
$uploaded = array ();
$uploaded_col_count = 0;
$file = @readdir($dir);
while ($file)
{
if ($file != '.' && $file != '..' && $file != 'index.php' && is_file($uploaded_path .DS . $file) && !is_link($uploaded_path .DS . $file))
{
//if( preg_match('/(\.gif$|\.png$|\.jpg|\.jpeg)$/is', $file) )
//{
$uploaded[$uploaded_col_count] = $file;
$uploaded_name[$uploaded_col_count] = ucfirst(str_replace("_", " ", preg_replace('/^(.*)\..*$/', '\1', $file)));
$uploaded_col_count++;
//}
}
$file = @readdir($dir);
}
@closedir ($dir);
@ksort ($uploaded);
@reset ($uploaded);
html_Kunena::browseUploaded($option, $uploaded, $uploaded_path, $type);
}
function replaceImage($kunena_db, $option, $imageName, $OxP)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
if (!$imageName) {
$app->redirect( JURI::base() ."index.php?option=$option&task=browseImages");
return;
}
require_once(KUNENA_PATH_LIB .DS. 'kunena.file.class.php');
// This function will replace the selected image with a dummy (OxP=1) or delete it
if ($OxP == "1")
{
$filename = explode('.', $imageName);
$fileName = $filename[0];
$fileExt = $filename[1];
$ret = CKunenaFile::copy(KUNENA_PATH_UPLOADED .DS. 'dummy.' . $fileExt, KUNENA_PATH_UPLOADED .DS. 'images' .DS. $imageName);
}
else
{
$ret = CKunenaFile::delete(KUNENA_PATH_UPLOADED .DS. 'images' .DS. $imageName);
//remove the database link as well
if ($ret) {
$kunena_db->setQuery("DELETE FROM #__fb_attachments where filelocation='%/images/" . $imageName . "'");
$kunena_db->query() or trigger_dberror("Unable to delete attachment.");
}
}
if ($ret) $app->enqueueMessage(_KUNENA_IMGDELETED);
$app->redirect( JURI::base() ."index.php?option=$option&task=browseImages");
}
function deleteFile($kunena_db, $option, $fileName)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
if (!$fileName) {
$app->redirect( JURI::base() ."index.php?option=$option&task=browseFiles");
return;
}
require_once(KUNENA_PATH_LIB .DS. 'kunena.file.class.php');
// step 1: Remove file
$ret = CKunenaFile::delete(KUNENA_PATH_UPLOADED .DS. 'files' .DS. $fileName);
//step 2: remove the database link to the file
if ($ret) {
$kunena_db->setQuery("DELETE FROM #__fb_attachments where filelocation='%/files/" . $fileName . "'");
$kunena_db->query() or trigger_dberror("Unable to delete attachment.");
}
if ($ret) $app->enqueueMessage(_KUNENA_FILEDELETED);
$app->redirect( JURI::base() ."index.php?option=$option&task=browseFiles");
}
//===============================
// Generic Functions
//===============================
/* danial */
######### category functions #########
function catTreeRecurse($id, $indent = "&nbsp;&nbsp;&nbsp;", $list, &$children, $maxlevel = 9999, $level = 0, $seperator = " >> ")
{
if (@$children[$id] && $level <= $maxlevel)
{
foreach ($children[$id] as $v)
{
$id = $v->id;
$txt = $v->name;
$pt = $v->parent;
$list[$id] = $v;
$list[$id]->treename = "$indent$txt";
$list[$id]->children = count(@$children[$id]);
$list = catTreeRecurse($id, "$indent$txt$seperator", $list, $children, $maxlevel, $level + 1);
//$list = catTreeRecurse( $id, "*", $list, $children, $maxlevel, $level+1 );
}
}
return $list;
}
function showCategories($cat, $cname, $extras = "", $levellimit = "4")
{
$kunena_db = &JFactory::getDBO();
$kunena_db->setQuery("select id ,parent,name from
#__fb_categories" . "\nORDER BY name");
$mitems = $kunena_db->loadObjectList();
check_dberror("Unable to load categories.");
// establish the hierarchy of the menu
$children = array ();
// first pass - collect children
foreach ($mitems as $v)
{
$pt = $v->parent;
$list = @$children[$pt] ? $children[$pt] : array ();
array_push($list, $v);
$children[$pt] = $list;
}
// second pass - get an indent list of the items
$list = catTreeRecurse(0, '', array (), $children);
// assemble menu items to the array
$mitems = array ();
$mitems[] = JHTML::_('select.option', '0', _KUNENA_TOPLEVEL, 'value', 'text');
$this_treename = '';
foreach ($list as $item)
{
if ($this_treename)
{
if ($item->id != $mitems && strpos($item->treename, $this_treename) === false) {
$mitems[] = JHTML::_('select.option',$item->id, $item->treename);
}
}
else
{
if ($item->id != $mitems) {
$mitems[] = JHTML::_('select.option', $item->id, $item->treename);
}
else {
$this_treename = "$item->treename/";
}
}
}
// build the html select list
$parlist = selectList2($mitems, $cname, 'class="inputbox" ' . $extras, 'value', 'text', $cat);
return $parlist;
}
#######################################
## multiple select list
function selectList2(&$arr, $tag_name, $tag_attribs, $key, $text, $selected)
{
reset ($arr);
$html = "\n<select name=\"$tag_name\" $tag_attribs>";
for ($i = 0, $n = count($arr); $i < $n; $i++)
{
$k = $arr[$i]->$key;
$t = $arr[$i]->$text;
$id = @$arr[$i]->id;
$extra = '';
$extra .= $id ? " id=\"" . $arr[$i]->id . "\"" : '';
if (is_array($selected))
{
foreach ($selected as $obj)
{
$k2 = $obj;
if ($k == $k2)
{
$extra .= " selected=\"selected\"";
break;
}
}
}
else {
$extra .= ($k == $selected ? " selected=\"selected\"" : '');
}
$html .= "\n\t<option value=\"" . $k . "\"$extra>" . $t . "</option>";
}
$html .= "\n</select>\n";
return $html;
}
function dircopy($srcdir, $dstdir, $verbose = false) {
$num = 0;
if (!is_dir($dstdir)) {
mkdir($dstdir);
}
if ($curdir = opendir($srcdir)) {
while ($file = readdir($curdir)) {
if ($file != '.' && $file != '..') {
$srcfile = $srcdir .DS . $file;
$dstfile = $dstdir .DS . $file;
if (is_file($srcfile)) {
if (is_file($dstfile)) {
$ow = filemtime($srcfile) - filemtime($dstfile);
}
else {
$ow = 1;
}
if ($ow > 0) {
if ($verbose) {
$tmpstr = _KUNENA_COPY_FILE;
$tmpstr = str_replace('%src%', $srcfile, $tmpstr);
$tmpstr = str_replace('%dst%', $dstfile, $tmpstr);
echo $tmpstr;
}
if (copy($srcfile, $dstfile)) {
touch($dstfile, filemtime($srcfile));
$num++;
if ($verbose) {
echo _KUNENA_COPY_OK;
}
}
else {
echo "" . _KUNENA_DIRCOPERR . " '$srcfile' " . _KUNENA_DIRCOPERR1 . "";
}
}
}
else if (is_dir($srcfile)) {
$num += dircopy($srcfile, $dstfile, $verbose);
}
}
}
closedir ($curdir);
}
return $num;
}
//===============================
// smiley functions
//===============================
//
// Read a listing of uploaded smilies for use in the add or edit smiley code...
//
function collect_smilies_ranks($path) {
$smiley_rank_images = JFolder::Files($path,false,false,false,array('index.php'));
return $smiley_rank_images;
}
function showsmilies($option)
{
$kunena_db = &JFactory::getDBO();
$app =& JFactory::getApplication();
$limit = $app->getUserStateFromRequest("global.list.limit", 'limit', $app->getCfg('list_limit'), 'int');
$limitstart = $app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int');
$kunena_db->setQuery("SELECT COUNT(*) FROM #__fb_smileys");
$total = $kunena_db->loadResult();
if ($limitstart >= $total) $limitstart = 0;
if ($limit == 0 || $limit > 100) $limit = 100;
$kunena_db->setQuery("SELECT * FROM #__fb_smileys", $limitstart, $limit);
$smileytmp = $kunena_db->loadObjectList();
check_dberror("Unable to load smileys.");
$smileypath = smileypath();
jimport('joomla.html.pagination');
$pageNavSP = new JPagination($total, $limitstart, $limit);
html_Kunena::showsmilies($option, KUNENA_LANGUAGE, $smileytmp, $pageNavSP, $smileypath);
}
function editsmiley($option, $id)
{
$kunena_db = &JFactory::getDBO();
$kunena_db->setQuery("SELECT * FROM #__fb_smileys WHERE id = $id");
$smileytmp = $kunena_db->loadAssocList();
$smileycfg = $smileytmp[0];
$smileypath = smileypath();
$smileypathabs = $smileypath ['abs'];
$smileypath = $smileypath['live'];
$smiley_images = collect_smilies_ranks ($smileypathabs);
$smiley_edit_img = '';
$filename_list = "";
for( $i = 0; $i < count($smiley_images); $i++ )
{
if( $smiley_images[$i] == $smileycfg['location'] )
{
$smiley_selected = "selected=\"selected\"";
$smiley_edit_img = $smileypath . $smiley_images[$i];
}
else
{
$smiley_selected = "";
}
$filename_list .= '<option value="' . $smiley_images[$i] . '"' . $smiley_selected . '>' . $smiley_images[$i] . '</option>'."\n";
}
html_Kunena::editsmiley($option, KUNENA_LANGUAGE, $smiley_edit_img, $filename_list, $smileypath, $smileycfg);
}
function newsmiley($option)
{
$kunena_db = &JFactory::getDBO();
$smileypath = smileypath();
$smileypathabs = $smileypath ['abs'];
$smileypath = $smileypath['live'];
$smiley_images = collect_smilies_ranks ($smileypathabs);
$filename_list = "";
for( $i = 0; $i < count($smiley_images); $i++ )
{
$filename_list .= '<option value="' . $smiley_images[$i] . '">' . $smiley_images[$i] . '</option>'."\n";
}
html_Kunena::newsmiley($option, $filename_list, $smileypath);
}
function savesmiley($option, $id = NULL)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$smiley_code = JRequest::getVar( 'smiley_code');
$smiley_location = JRequest::getVar( 'smiley_url');
$smiley_emoticonbar = (JRequest::getVar( 'smiley_emoticonbar')) ? JRequest::getVar( 'smiley_emoticonbar') : 0;
if (empty($smiley_code) || empty($smiley_location))
{
$task = ($id == NULL) ? 'newsmiley' : 'editsmiley&id='.$id;
$app->redirect( JURI::base() ."index.php?option=$option&task=".$task, _KUNENA_MISSING_PARAMETER);
$app->close();
}
$kunena_db->setQuery("SELECT * FROM #__fb_smileys");
$smilies = $kunena_db->loadAssocList();
foreach ($smilies as $value)
{
if (in_array($smiley_code, $value) && !($value['id'] == $id))
{
$task = ($id == NULL) ? 'newsmiley' : 'editsmiley&id='.$id;
$app->redirect( JURI::base() ."index.php?option=$option&task=".$task, _KUNENA_CODE_ALLREADY_EXITS);
$app->close();
}
}
if ($id == NULL)
{
$kunena_db->setQuery("INSERT INTO #__fb_smileys SET code = '$smiley_code', location = '$smiley_location', emoticonbar = '$smiley_emoticonbar'");
}
else
{
$kunena_db->setQuery("UPDATE #__fb_smileys SET code = '$smiley_code', location = '$smiley_location', emoticonbar = '$smiley_emoticonbar' WHERE id = $id");
}
$kunena_db->query() or trigger_dberror("Unable to save smiley.");
$app->redirect( JURI::base() ."index.php?option=$option&task=showsmilies", _KUNENA_SMILEY_SAVED);
}
function deletesmiley($option, $cid)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
if ($cids = implode(',', $cid)) {
$kunena_db->setQuery("DELETE FROM #__fb_smileys WHERE id IN ($cids)");
$kunena_db->query() or trigger_dberror("Unable to delete smiley.");
}
$app->redirect( JURI::base() ."index.php?option=$option&task=showsmilies", _KUNENA_SMILEY_DELETED);
}
function smileypath()
{
$fbConfig =& CKunenaConfig::getInstance();
if (is_dir(KUNENA_PATH_TEMPLATE .DS. $fbConfig->template.'/images/'.KUNENA_LANGUAGE.'/emoticons')) {
$smiley_live_path = JURI::root() . '/components/com_kunena/template/'.$fbConfig->template.'/images/'.KUNENA_LANGUAGE.'/emoticons/';
$smiley_abs_path = KUNENA_PATH_TEMPLATE .DS. $fbConfig->template.'/images/'.KUNENA_LANGUAGE.'/emoticons';
}
else {
$smiley_live_path = KUNENA_PATH_TEMPLATE_DEFAULT .DS. 'images/'.KUNENA_LANGUAGE.'/emoticons/';
$smiley_abs_path = KUNENA_PATH_TEMPLATE_DEFAULT .DS. 'images/'.KUNENA_LANGUAGE.'/emoticons';
}
$smileypath['live'] = $smiley_live_path;
$smileypath['abs'] = $smiley_abs_path;
return $smileypath;
}
//===============================
// FINISH smiley functions
//===============================
//===============================
// Rank Administration
//===============================
//Dan Syme/IGD - Ranks Management
function showRanks($option)
{
global $order;
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$limit = $app->getUserStateFromRequest("global.list.limit", 'limit', $app->getCfg('list_limit'), 'int');
$limitstart = $app->getUserStateFromRequest("{$option}.limitstart", 'limitstart', 0, 'int');
$kunena_db->setQuery("SELECT COUNT(*) FROM #__fb_ranks");
$total = $kunena_db->loadResult();
if ($limitstart >= $total) $limitstart = 0;
if ($limit == 0 || $limit > 100) $limit = 100;
$kunena_db->setQuery("SELECT * FROM #__fb_ranks", $limitstart, $limit);
$ranks = $kunena_db->loadObjectList();
check_dberror("Unable to load ranks.");
$rankpath = rankpath();
jimport('joomla.html.pagination');
$pageNavSP = new JPagination( $total,$limitstart,$limit );
html_Kunena::showRanks( $option,KUNENA_LANGUAGE,$ranks,$pageNavSP,$order,$rankpath );
}
function rankpath()
{
/*
$fbConfig =& CKunenaConfig::getInstance();
if (is_dir(JURI::root() . '/components/com_kunena/template/'.$fbConfig->template.'/images/'.KUNENA_LANGUAGE.'/ranks')) {
$rank_live_path = JURI::root() . '/components/com_kunena/template/'.$fbConfig->template.'/images/'.KUNENA_LANGUAGE.'/ranks/';
$rank_abs_path = KUNENA_PATH_TEMPLATE .DS. $fbConfig->template.'/images/'.KUNENA_LANGUAGE.'/ranks';
}
else {
$rank_live_path = JURI::root() . '/components/com_kunena/template/default/images/'.KUNENA_LANGUAGE.'/ranks/';
$rank_abs_path = KUNENA_PATH_TEMPLATE_DEFAULT .DS. 'images/'.KUNENA_LANGUAGE.'/ranks';
}
$rankpath['live'] = $rank_live_path;
$rankpath['abs'] = $rank_abs_path;
*/
$rankpath['live'] = KUNENA_URLRANKSPATH;
$rankpath['abs'] = KUNENA_ABSRANKSPATH;
return $rankpath;
}
function newRank($option)
{
$kunena_db = &JFactory::getDBO();
$rankpath = rankpath();
$rankpathabs = $rankpath ['abs'];
$rankpath = $rankpath['live'];
$rank_images = collect_smilies_ranks($rankpathabs);
$filename_list = "";
$i = 0;
foreach ($rank_images as $id=>$row)
{
$filename_list .= '<option value="' . $rank_images[$id] . '">' . $rank_images[$id] . '</option>'."\n";
}
html_Kunena::newRank($option, $filename_list, $rankpath);
}
function deleteRank($option, $cid = null)
{
$kunena_db = &JFactory::getDBO();
$app =& JFactory::getApplication();
if ($cids = implode(',', $cid)) {
$kunena_db->setQuery("DELETE FROM #__fb_ranks WHERE rank_id IN ($cids)");
$kunena_db->query() or trigger_dberror("Unable to delete rank.");
}
$app->redirect( JURI::base() ."index.php?option=$option&task=ranks", _KUNENA_RANK_DELETED);
}
function saveRank($option, $id = NULL)
{
$app =& JFactory::getApplication();
$kunena_db = &JFactory::getDBO();
$rank_title = JRequest::getVar( 'rank_title');
$rank_image = JRequest::getVar( 'rank_image');
$rank_special = JRequest::getVar( 'rank_special');
$rank_min = JRequest::getVar( 'rank_min');
if (empty($rank_title) || empty($rank_image))
{
$task = ($id == NULL) ? 'newRank' : 'editRank&id='.$id;
$app->redirect( JURI::base() ."index.php?option=$option&task=".$task, _KUNENA_MISSING_PARAMETER);
$app->close();
}
$kunena_db->setQuery("SELECT * FROM #__fb_ranks");
$kunena_db->query() or trigger_dberror("Unable to load ranks.");
$ranks = $kunena_db->loadAssocList();
foreach ($ranks as $value)
{
if (in_array($rank_title, $value) && !($value['rank_id'] == $id))
{
$task = ($id == NULL) ? 'newRank' : 'editRank&id='.$id;
$app->redirect( JURI::base() ."index.php?option=$option&task=".$task, _KUNENA_RANK_ALLREADY_EXITS);
$app->close();
}
}
if ($id == NULL)
{
$kunena_db->setQuery("INSERT INTO #__fb_ranks SET rank_title = '$rank_title', rank_image = '$rank_image', rank_special = '$rank_special', rank_min = '$rank_min'");
}
else
{
$kunena_db->setQuery("UPDATE #__fb_ranks SET rank_title = '$rank_title', rank_image = '$rank_image', rank_special = '$rank_special', rank_min = '$rank_min' WHERE rank_id = $id");
}
$kunena_db->query() or trigger_dberror("Unable to save ranks.");
$app->redirect( JURI::base() ."index.php?option=$option&task=ranks", _KUNENA_RANK_SAVED);
}
function editRank($option, $id)
{
$kunena_db = &JFactory::getDBO();
$kunena_db->setQuery("SELECT * FROM #__fb_ranks WHERE rank_id = '$id'");
$kunena_db->query() or trigger_dberror("Unable to load ranks.");
$ranks = $kunena_db->loadObjectList();
check_dberror("Unable to load ranks.");
$path = rankpath();
$pathabs = $path ['abs'];
$path = $path['live'];
$rank_images = collect_smilies_ranks($pathabs);
$edit_img = $filename_list = '';
foreach ($ranks as $row)
{
foreach ($rank_images as $img)
{
$image = $path . $img;
if ($img == $row->rank_image)
{
$selected = ' selected="selected"';
$edit_img = $path . $img;
}
else
{
$selected = '';
}
if (strlen($img) > 255)
{
continue;
}
$filename_list .= '<option value="' . kunena_htmlspecialchars($img) . '"' . $selected . '>' . $img . '</option>';
}
}
html_Kunena::editRank($option, KUNENA_LANGUAGE, $edit_img, $filename_list, $path, $row);
}
//===============================
// FINISH smiley functions
//===============================
// Dan Syme/IGD - Ranks Management
function KUNENA_GetAvailableModCats($catids) {
$kunena_db = &JFactory::getDBO();
$list = JJ_categoryArray(1);
$this_treename = '';
$catid = 0;
foreach ($list as $item) {
if ($this_treename) {
if ($item->id != $catid && strpos($item->treename, $this_treename) === false) {
$options[] = JHTML::_('select.option',$item->id, $item->treename);
}
}
else {
if ($item->id != $catid) {
$options[] = JHTML::_('select.option',$item->id, $item->treename);
}
else {
$this_treename = stripslashes($item->treename)."/";
}
}
}
$parent = JHTML::_('select.genericlist',$options, 'catid[]', 'class="inputbox fbs" multiple="multiple" id="FB_AvailableForums" ', 'value', 'text', $catids);
return $parent;
}
// Grabs gd version
function KUNENA_gdVersion() {
// Simplified GD Version check
if (!extension_loaded('gd')) {
return;
}
$phpver = substr(phpversion(), 0, 3);
// gd_info came in at 4.3
if ($phpver < 4.3)
return -1;
if (function_exists('gd_info')) {
$ver_info = gd_info();
preg_match('/\d/', $ver_info['GD Version'], $match);
$gd_ver = $match[0];
return $match[0];
} else {
return;
}
}
?>