AAAAcom_kunena.xml 0000666 00000012352 15137337576 0007435 0 ustar 00
Xmap - Kunena Plugin
Guillermo Vargas
September 2007
GNU GPL
http://www.gnu.org/copyleft/gpl.html GNU/GPL
guille@vargas.co.cr
joomla.vargas.co.cr
2.0.3
Xmap Plugin for Kunena component
com_kunena.php
en-GB.plg_xmap_com_kunena.ini
es-ES.plg_xmap_com_kunena.ini
fa-IR.plg_xmap_com_kunena.ini
cs-CZ.plg_xmap_com_kunena.ini
nl-NL.plg_xmap_com_kunena.ini
ru-RU.plg_xmap_com_kunena.ini
com_kunena.php 0000666 00000027732 15137337576 0007434 0 ustar 00 link);
parse_str(html_entity_decode($link_query['query']), $link_vars);
$catid = intval(JArrayHelper::getValue($link_vars, 'catid', 0));
$id = intval(JArrayHelper::getValue($link_vars, 'id', 0));
$func = JArrayHelper::getValue($link_vars, 'func', '', '');
if ($func = 'showcat' && $catid) {
$node->uid = 'com_kunenac' . $catid;
$node->expandible = false;
} elseif ($func = 'view' && $id) {
$node->uid = 'com_kunenaf' . $id;
$node->expandible = false;
}
}
function getTree($xmap, $parent, &$params)
{
if ($xmap->isNews) // This component does not provide news content. don't waste time/resources
return false;
// Make sure that we can load the kunena api
if (!xmap_com_kunena::loadKunenaApi()) {
return false;
}
if (!self::$profile) {
self::$config = KunenaFactory::getConfig ();;
self::$profile = KunenaFactory::getUser ();
}
$user = JFactory::getUser();
$catid = 0;
$link_query = parse_url($parent->link);
if (!isset($link_query['query'])) {
return;
}
parse_str(html_entity_decode($link_query['query']), $link_vars);
$view = JArrayHelper::getValue($link_vars, 'view', '');
switch ($view){
case 'showcat': case 'category':
$link_query = parse_url($parent->link);
parse_str(html_entity_decode($link_query['query']), $link_vars);
$catid = JArrayHelper::getValue($link_vars, 'catid', 0);
break;
case 'listcat':
case 'entrypage':
$catid = 0;
break;
default:
return true; // Do not expand links to posts
}
$include_topics = JArrayHelper::getValue($params, 'include_topics', 1);
$include_topics = ( $include_topics == 1
|| ( $include_topics == 2 && $xmap->view == 'xml')
|| ( $include_topics == 3 && $xmap->view == 'html')
|| $xmap->view == 'navigator');
$params['include_topics'] = $include_topics;
$priority = JArrayHelper::getValue($params, 'cat_priority', $parent->priority);
$changefreq = JArrayHelper::getValue($params, 'cat_changefreq', $parent->changefreq);
if ($priority == '-1')
$priority = $parent->priority;
if ($changefreq == '-1')
$changefreq = $parent->changefreq;
$params['cat_priority'] = $priority;
$params['cat_changefreq'] = $changefreq;
$params['groups'] = implode(',', $user->authorisedLevels());
$priority = JArrayHelper::getValue($params, 'topic_priority', $parent->priority);
$changefreq = JArrayHelper::getValue($params, 'topic_changefreq', $parent->changefreq);
if ($priority == '-1')
$priority = $parent->priority;
if ($changefreq == '-1')
$changefreq = $parent->changefreq;
$params['topic_priority'] = $priority;
$params['topic_changefreq'] = $changefreq;
if ($include_topics) {
$ordering = JArrayHelper::getValue($params, 'topics_order', 'ordering');
if ( !in_array($ordering,array('id', 'ordering','time','subject','hits')) )
$ordering = 'ordering';
$params['topics_order'] = 't.`'.$ordering.'`';
$params['include_pagination'] = ($xmap->view == 'xml');
$params['limit'] = '';
$params['days'] = '';
$limit = JArrayHelper::getValue($params, 'max_topics', '');
if (intval($limit))
$params['limit'] = ' LIMIT ' . $limit;
$days = JArrayHelper::getValue($params, 'max_age', '');
$params['days'] = false;
if (intval($days))
$params['days'] = ($xmap->now - (intval($days) * 86400));
}
$params['table_prefix'] = xmap_com_kunena::getTablePrefix();
xmap_com_kunena::getCategoryTree($xmap, $parent, $params, $catid);
}
/*
* Builds the Kunena's tree
*/
function getCategoryTree($xmap, $parent, &$params, $parentCat)
{
$db = JFactory::getDBO();
// Load categories
if (self::getKunenaMajorVersion() >= '2.0') {
// Kunena 2.0+
$catlink = 'index.php?option=com_kunena&view=category&catid=%s&Itemid='.$parent->id;
$toplink = 'index.php?option=com_kunena&view=topic&catid=%s&id=%s&Itemid='.$parent->id;
kimport('kunena.forum.category.helper');
$categories = KunenaForumCategoryHelper::getChildren($parentCat);
} else {
$catlink = 'index.php?option=com_kunena&func=showcat&catid=%s&Itemid='.$parent->id;
$toplink = 'index.php?option=com_kunena&func=view&catid=%s&id=%s&Itemid='.$parent->id;
if (self::getKunenaMajorVersion() >= '1.6') {
// Kunena 1.6+
kimport('session');
$session = KunenaFactory::getSession();
$session->updateAllowedForums();
$allowed = $session->allowed;
$query = "SELECT id, name FROM `#__kunena_categories` WHERE parent={$parentCat} AND id IN ({$allowed}) ORDER BY ordering";
} else {
// Kunena 1.0+
$query = "SELECT id, name FROM `{$params['table_prefix']}_categories` WHERE parent={$parentCat} AND published=1 AND pub_access=0 ORDER BY ordering";
}
$db->setQuery($query);
$categories = $db->loadObjectList();
}
/* get list of categories */
$xmap->changeLevel(1);
foreach ($categories as $cat) {
$node = new stdclass;
$node->id = $parent->id;
$node->browserNav = $parent->browserNav;
$node->uid = 'com_kunenac' . $cat->id;
$node->name = $cat->name;
$node->priority = $params['cat_priority'];
$node->changefreq = $params['cat_changefreq'];
$node->link = sprintf($catlink, $cat->id);
$node->expandible = true;
$node->secure = $parent->secure;
if ($xmap->printNode($node) !== FALSE) {
xmap_com_kunena::getCategoryTree($xmap, $parent, $params, $cat->id);
}
}
if ($params['include_topics']) {
if (self::getKunenaMajorVersion() >= '2.0') {
// Kunena 2.0+
kimport('kunena.forum.topic.helper');
// TODO: orderby parameter is missing:
$topics = KunenaForumTopicHelper::getLatestTopics($parentCat, 0, $params['limit'], array('starttime', $params['days']));
if (count($topics)==2 && is_numeric($topics[0])){
$topics = $topics[1];
}
} else {
$access = KunenaFactory::getAccessControl();
$hold = $access->getAllowedHold(self::$profile, $parentCat);
// Kunena 1.0+
$query = "SELECT t.id, t.catid, t.subject, max(m.time) as time, count(m.id) as msgcount
FROM {$params['table_prefix']}_messages t
INNER JOIN {$params['table_prefix']}_messages AS m ON t.id = m.thread
WHERE t.catid=$parentCat AND t.parent=0
AND t.hold in ({$hold})
GROUP BY m.`thread`
ORDER BY {$params['topics_order']} DESC";
if ($params['days']) {
$query = "SELECT * FROM ($query) as topics WHERE time >= {$params['days']}";
}
#echo str_replace('#__','mgbj2_',$query);
$db->setQuery($query, 0, $params['limit']);
$topics = $db->loadObjectList();
}
//get list of topics
foreach ($topics as $topic) {
$node = new stdclass;
$node->id = $parent->id;
$node->browserNav = $parent->browserNav;
$node->uid = 'com_kunenat' . $topic->id;
$node->name = $topic->subject;
$node->priority = $params['topic_priority'];
$node->changefreq = $params['topic_changefreq'];
$node->modified = intval(@$topic->last_post_time? $topic->last_post_time : $topic->time);
$node->link = sprintf($toplink, (@$topic->category_id? $topic->category_id : $topic->catid), $topic->id);
$node->expandible = false;
$node->secure = $parent->secure;
if ($xmap->printNode($node) !== FALSE) {
// Pagination will not work with K2.0, revisit this when that version is out and stable
if ($params['include_pagination'] && isset($topic->msgcount) && $topic->msgcount > self::$config->messages_per_page ){
$msgPerPage = self::$config->messages_per_page;
$threadPages = ceil ( $topic->msgcount / $msgPerPage );
for ($i=2;$i<=$threadPages;$i++) {
$subnode = new stdclass;
$subnode->id = $node->id;
$subnode->uid = $node->uid.'p'.$i;
$subnode->name = "[$i]";
$subnode->seq = $i;
$subnode->link = $node->link.'&limit='.$msgPerPage.'&limitstart='.(($i-1)*$msgPerPage);
$subnode->browserNav = $node->browserNav;
$subnode->priority = $node->priority;
$subnode->changefreq = $node->changefreq;
$subnode->modified = $node->modified;
$subnode->secure = $node->secure;
$xmap->printNode($subnode);
}
}
}
}
}
$xmap->changeLevel(-1);
}
private static function loadKunenaApi()
{
if (!defined('KUNENA_LOADED')) {
jimport ( 'joomla.application.component.helper' );
// Check if Kunena component is installed/enabled
if (! JComponentHelper::isEnabled ( 'com_kunena', true )) {
return false;
}
// Check if Kunena API exists
$kunena_api = JPATH_ADMINISTRATOR . '/components/com_kunena/api.php';
if (! is_file ( $kunena_api ))
return false;
// Load Kunena API
require_once ($kunena_api);
}
return true;
}
/**
* Based on Matias' version (Thanks)
* See: http://docs.kunena.org/index.php/Developing_Kunena_Router
*/
function getKunenaMajorVersion() {
static $version;
if (!$version) {
if (class_exists('KunenaForum')) {
$version = KunenaForum::versionMajor();
} elseif (class_exists('Kunena')) {
$version = substr(Kunena::version(), 0, 3);
} elseif (is_file(JPATH_ROOT.'/components/com_kunena/lib/kunena.defines.php')) {
$version = '1.5';
} elseif (is_file(JPATH_ROOT.'/components/com_kunena/lib/kunena.version.php')) {
$version = '1.0';
}
}
return $version;
}
function getTablePrefix() {
$version = self::getKunenaMajorVersion();
if ($version <= 1.5) {
return '#__fb';
}
return '#__kunena';
}
}
.htaccess 0000666 00000000177 15137337576 0006374 0 ustar 00
Order allow,deny
Deny from all