# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: Joomla root # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. --- components/com_comprofiler/plugin/user/plug_cbsimpleboardtab/cb.simpleboardtab.model.php +++ components/com_comprofiler/plugin/user/plug_cbsimpleboardtab/cb.simpleboardtab.model.php @@ -24,39 +24,48 @@ function getConfig( $user ) { global $_CB_database; - static $forum = null; + static $forum = null; if ( $forum === null ) { - $forum = $this->getForumParams(); + $forum = $this->getForumParams(); + if ( $forum !== null ) { - if ( ! $forum->config ) { - $query = 'SELECT * FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_config' ); - $_CB_database->setQuery( $query ); - $forum->config = $_CB_database->loadAssoc(); - } else { - if ( $forum->component == 'com_fireboard' ) { - global $fbConfig; - $config =& $fbConfig; - } elseif ( $forum->component != 'com_kunena' ) { - global $sbConfig; - $config =& $sbConfig; + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + if ( ! $forum->config ) { + $query = 'SELECT * FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_config' ); + $_CB_database->setQuery( $query ); + $forum->config = $_CB_database->loadAssoc(); + } else { + if ( $forum->component == 'com_fireboard' ) { + global $fbConfig; + $config =& $fbConfig; + } elseif ( $forum->component != 'com_kunena' ) { + global $sbConfig; + $config =& $sbConfig; + } + + include_once ( $forum->config ); + + if ( $forum->component == 'com_kunena' ) { + $config = get_object_vars( CKunenaConfig::getInstance() ); + } + + $forum->config = $config; } - - include_once ( $forum->config ); - - if ( $forum->component == 'com_kunena' ) { - $config = get_object_vars( CKunenaConfig::getInstance() ); - } - - $forum->config = $config; + } elseif ( class_exists( 'KunenaFactory' ) ) { + $forum->config = get_object_vars( KunenaFactory::getConfig() ); + } else { + $forum->config = null; } - - $forum->version = $this->getVersion( $forum ); + + $forum->version = $this->getVersion( $forum ); } } + if ( $forum !== null && isset( $user->id ) ) { - $forum->userdetails = $this->getUserDetails( $user, $forum ); + $forum->userdetails = $this->getUserDetails( $user, $forum ); } + return $forum; } @@ -68,22 +77,29 @@ */ function getVersion( $forum ) { global $_CB_database; - static $version = null; + static $version = null; + if ( $version === null ) { - if ( isset( $forum->config['version'] ) ) { - $version = $forum->config['version']; - } elseif ( ( $forum->component == 'com_fireboard' ) || ( $forum->component == 'com_kunena' ) ) { - $query = 'SELECT ' . $_CB_database->NameQuote( 'version' ) - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_version' ) - . "\n ORDER BY " . $_CB_database->NameQuote( 'id' ) . " DESC" - ; - $_CB_database->setQuery( $query, 0, 1 ); - $version = $_CB_database->loadResult(); + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + if ( isset( $forum->config['version'] ) ) { + $version = $forum->config['version']; + } elseif ( ( $forum->component == 'com_fireboard' ) || ( $forum->component == 'com_kunena' ) ) { + $query = 'SELECT ' . $_CB_database->NameQuote( 'version' ) + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_version' ) + . "\n ORDER BY " . $_CB_database->NameQuote( 'id' ) . " DESC"; + $_CB_database->setQuery( $query, 0, 1 ); + $version = $_CB_database->loadResult(); + } else { + $version = '0.0.0'; + } + } elseif ( class_exists( 'KunenaForum' ) ) { + $version = KunenaForum::version(); } else { - $version = '0.0.0'; + $version = '0.0.0'; } } + return $version; } @@ -115,45 +131,54 @@ $uIsAdm = isModerator( $user->id ); $uIsMod = $userDetails->moderator; $pathImage = $_CB_framework->getCfg( 'live_site' ) . '/components/' . $forum->component; - - if ( $supportsDbRanks ) { - - if ( $userDetails->rank != 0 ) { - $where = $_CB_database->NameQuote( 'rank_id' ) . ' = ' . (int) $userDetails->rank; - } else { - $where = $_CB_database->NameQuote( 'rank_min' ) . ' <= ' . (int) $userDetails->posts + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + if ( $supportsDbRanks ) { + if ( $userDetails->rank != 0 ) { + $where = $_CB_database->NameQuote( 'rank_id' ) . ' = ' . (int) $userDetails->rank; + } else { + $where = $_CB_database->NameQuote( 'rank_min' ) . ' <= ' . (int) $userDetails->posts . "\n ORDER BY " . $_CB_database->NameQuote( 'rank_min' ) . ' DESC'; - } - - $query = 'SELECT ' . $_CB_database->NameQuote( 'rank_title' ) + } + + $query = 'SELECT ' . $_CB_database->NameQuote( 'rank_title' ) . ', ' . $_CB_database->NameQuote( 'rank_image' ) . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_ranks' ) - . "\n WHERE " . $where; - $_CB_database->setQuery( $query, 0, 1 ); - $userRank = null; - $_CB_database->loadObject( $userRank ); - - $pathImage = $pathImage . $this->params->get( 'TemplateRank', '/template/default/images' ); + . "\n WHERE " . $where; + $_CB_database->setQuery( $query, 0, 1 ); + $userRank = null; + $_CB_database->loadObject( $userRank ); + + $pathImage = $pathImage . $this->params->get( 'TemplateRank', '/template/default/images' ); + $rText = $userRank->rank_title; + $rImg = $pathImage . '/ranks/' . $userRank->rank_image; + } else { + $userDetails->rank = 1; + + for ( $i = 1; $i <= 5; $i++ ) { + $rankPrev = $forum->config['rank' . ( ( ( $i > 1 ) ? ( $i - 1 ) : $i ) )]; + $rank = $forum->config['rank' . $i]; + + if ( $userDetails->posts <= $rank && ( $userDetails->posts > $rankPrev ) ) { + $userDetails->rank = $i; + } elseif ( ( $i == 5 ) && ( $userDetails->posts > $rank ) ) { + $userDetails->rank = 6; + } + } + + $rText = $forum->config['rank' . $userDetails->rank . 'txt']; + $rImg = $pathImage . '/ranks/rank' . $userDetails->rank . '.gif'; + } + } elseif ( $userDetails instanceof KunenaUser ) { + $pathImage = $pathImage . $this->params->get( 'TemplateRank', '/template/default/images' ); + $userRank = $userDetails->getRank(); $rText = $userRank->rank_title; $rImg = $pathImage . '/ranks/' . $userRank->rank_image; } else { - $userDetails->rank = 1; - - for ( $i = 1; $i <= 5; $i++ ) { - $rankPrev = $forum->config['rank' . ( ( ( $i > 1 ) ? ( $i - 1 ) : $i ) )]; - $rank = $forum->config['rank' . $i]; - - if ( $userDetails->posts <= $rank && ( $userDetails->posts > $rankPrev ) ) { - $userDetails->rank = $i; - } elseif ( ( $i == 5 ) && ( $userDetails->posts > $rank ) ) { - $userDetails->rank = 6; - } - } - - $rText = $forum->config['rank' . $userDetails->rank . 'txt']; - $rImg = $pathImage . '/ranks/rank' . $userDetails->rank . '.gif'; + $rText = null; + $rImg = null; } - + if ( ( $userDetails->rank == 0 ) && $uIsMod ) { $rText = CBTxt::T( 'Moderator' ); $rImg = $pathImage . '/ranks/rankmod.gif'; @@ -164,7 +189,7 @@ $rImg = $pathImage . '/ranks/rankadmin.gif'; } - if ( $forum->config['rankimages'] ) { + if ( $forum->config['rankimages'] && $rImg ) { $userDetails->msg_userrankimg = '' . htmlspecialchars( $rText ) . ''; } @@ -217,14 +242,19 @@ */ function _unsubThread( $user, $thread, $forum ) { global $_CB_database; - - $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) - . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id - . "\n AND " . $_CB_database->NameQuote( 'thread' ) . " = " . (int) $thread - ; - $_CB_database->setQuery( $query ); - if ( ! $_CB_database->query() ) { - trigger_error( 'CBForum-unsubThread SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) + . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id + . "\n AND " . $_CB_database->NameQuote( 'thread' ) . " = " . (int) $thread; + $_CB_database->setQuery( $query ); + if ( ! $_CB_database->query() ) { + trigger_error( 'CBForum-unsubThread SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + } + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + if ( $thread ) { + KunenaForumTopicHelper::subscribe( array( (int) $thread ), 0, (int) $user->id ); + } } } @@ -236,13 +266,20 @@ */ function _unsubAll( $user, $forum ) { global $_CB_database; - - $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) - . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id - ; - $_CB_database->setQuery( $query ); - if ( ! $_CB_database->query() ) { - trigger_error( 'CBForum-unsubAll SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) + . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id; + $_CB_database->setQuery( $query ); + if ( ! $_CB_database->query() ) { + trigger_error( 'CBForum-unsubAll SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + } + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + $threads = array_keys( array_pop( KunenaForumTopicHelper::getLatestTopics( false, 0, 0, array( 'user' => (int) $user->id, 'subscribed' => true ) ) ) ); + + if ( $threads ) { + KunenaForumTopicHelper::subscribe( $threads, 0, (int) $user->id ); + } } } @@ -255,14 +292,19 @@ */ function _unfavThread( $user, $thread, $forum ) { global $_CB_database; - - $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) - . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id - . "\n AND " . $_CB_database->NameQuote( 'thread' ) . " = " . (int) $thread - ; - $_CB_database->setQuery( $query ); - if ( ! $_CB_database->query() ) { - trigger_error( 'CBForum-unfavThread SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) + . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id + . "\n AND " . $_CB_database->NameQuote( 'thread' ) . " = " . (int) $thread; + $_CB_database->setQuery( $query ); + if ( ! $_CB_database->query() ) { + trigger_error( 'CBForum-unfavThread SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + } + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + if ( $thread ) { + KunenaForumTopicHelper::favorite( array( (int) $thread ), 0, (int) $user->id ); + } } } @@ -274,13 +316,20 @@ */ function _unfavAll( $user, $forum ) { global $_CB_database; - - $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) - . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id - ; - $_CB_database->setQuery( $query ); - if ( ! $_CB_database->query() ) { - trigger_error( 'CBForum-unfavAll SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'DELETE FROM ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) + . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id; + $_CB_database->setQuery( $query ); + if ( ! $_CB_database->query() ) { + trigger_error( 'CBForum-unfavAll SQL error' . $_CB_database->stderr( true ), E_USER_WARNING ); + } + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + $threads = array_keys( array_pop( KunenaForumTopicHelper::getLatestTopics( false, 0, 0, array( 'user' => (int) $user->id, 'favorited' => true ) ) ) ); + + if ( $threads ) { + KunenaForumTopicHelper::favorite( $threads, 0, (int) $user->id ); + } } } @@ -421,19 +470,25 @@ $user_id = $_CB_framework->myId(); } - $cache = array(); + static $cache = array(); if ( ! isset( $cache[$user_id] ) ) { - $query = 'SELECT ' . $_CB_database->NameQuote( 'allowed' ) + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'SELECT ' . $_CB_database->NameQuote( 'allowed' ) . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_sessions' ) . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user_id; - $_CB_database->setQuery( $query, 0, 1 ); - $categories = $_CB_database->loadResult(); + $_CB_database->setQuery( $query, 0, 1 ); + $categories = $_CB_database->loadResult(); - if ( $categories && ( $categories != 'na' ) ) { - $allowed = explode( ',', $categories ); + if ( $categories && ( $categories != 'na' ) ) { + $allowed = explode( ',', $categories ); - cbArrayToInts( $allowed ); + cbArrayToInts( $allowed ); + } else { + $allowed = null; + } + } elseif ( class_exists( 'KunenaAccess' ) ) { + $allowed = KunenaAccess::getInstance()->getAllowedCategories( (int) $user_id ); } else { $allowed = null; } @@ -454,12 +509,113 @@ function getUserPostTotal( $user, $forum ) { global $_CB_framework, $_CB_database; - $cache = array(); + static $cache = array(); if ( ! isset( $cache[$user->id] ) ) { - $categories = $this->getAllowedCategories( null, $forum ); - $pagingParams = $this->_getPaging( array(), array( 'fposts_' ) ); + $pagingParams = $this->_getPaging( array(), array( 'fposts_' ) ); + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $categories = $this->getAllowedCategories( null, $forum ); + + if ( strcasecmp( substr( $forum->version, 0, 3 ), '1.7' ) >= 0 ) { + $cbUser =& CBuser::getInstance( (int) $user->id ); + + if ( ! $cbUser ) { + $cbUser =& CBuser::getInstance( null ); + } + + $access = "\n AND ( ( b." . $_CB_database->NameQuote( 'access' ) . " IN ( " . implode( ',', $cbUser->getAuthorisedViewLevelsIds( false ) ) . " )" + . ' AND b.' . $_CB_database->NameQuote( 'accesstype' ) . ' = ' . $_CB_database->Quote( 'joomla.level' ) . ' )' + . "\n OR ( b." . $_CB_database->NameQuote( 'pub_access' ) . " IN ( " . implode( ',', $_CB_framework->acl->get_groups_below_me( (int) $user->id, true ) ) . " )" + . ' AND b.' . $_CB_database->NameQuote( 'accesstype' ) . ' = ' . $_CB_database->Quote( 'none' ) . ' )'; + } else { + $access = "\n AND ( b." . $_CB_database->NameQuote( 'pub_access' ) . " IN ( " . implode( ',', $_CB_framework->acl->get_groups_below_me( (int) $user->id, true ) ) . " )"; + } + + $access .= ( $categories ? "\n OR b." . $_CB_database->NameQuote( 'id' ) . " IN ( " . implode( ',', $categories ) . " ) )" : ' )' ); + + $query = 'SELECT COUNT(*)' + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . " AS a" + . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . " AS b" + . ' ON a.' . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) + . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . " AS c" + . ' ON a.' . $_CB_database->NameQuote( 'thread' ) . ' = c.' . $_CB_database->NameQuote( 'id' ) + . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages_text' ) . " AS d" + . ' ON a.' . $_CB_database->NameQuote( 'id' ) . ' = d.' . $_CB_database->NameQuote( 'mesid' ) + . "\n WHERE a." . $_CB_database->NameQuote( 'hold' ) . " = 0" + . "\n AND b." . $_CB_database->NameQuote( 'published' ) . " = 1" + . "\n AND a." . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id + . $access + . ( $pagingParams['fposts_search'] ? "\n AND ( a." . $_CB_database->NameQuote( 'subject' ) . " LIKE '%" . cbEscapeSQLsearch( cbGetEscaped( $pagingParams['fposts_search'] ) ) . "%' OR d." . $_CB_database->NameQuote( 'message' ) . " LIKE '%" . cbEscapeSQLsearch( $pagingParams['fposts_search'] ) . "%' )" : null ); + $_CB_database->setQuery( $query ); + $total = $_CB_database->loadResult(); + } elseif ( class_exists( 'KunenaForumMessageHelper' ) ) { + $where = array(); + + if ( isset( $pagingParams['fposts_search'] ) && ( $pagingParams['fposts_search'] != '' ) ) { + $where[] = '( m.' . $_CB_database->NameQuote( 'subject' ) . ' LIKE ' . $_CB_database->Quote( '%' . $_CB_database->getEscaped( $pagingParams['fposts_search'], true ) . '%', false ) + . ' OR t.' . $_CB_database->NameQuote( 'message' ) . ' LIKE ' . $_CB_database->Quote( '%' . $_CB_database->getEscaped( $pagingParams['fposts_search'], true ) . '%', false ) . ' )'; + } + + $params = array( 'user' => (int) $user->id, + 'starttime' => -1, + 'where' => ( count( $where ) ? implode( ' AND ', $where ) : null ) + ); + + $total = array_shift( KunenaForumMessageHelper::getLatestMessages( false, 0, 0, $params ) ); + } else { + $total = null; + } + + $cache[$user->id] = (int) $total; + } + + return $cache[$user->id]; + } + + /** + * Puts users posts into array + * + * @param moscomprofilerUser $user + * @param object $forum + * @return object + */ + function getUserPosts( $user, $forum ) { + global $_CB_framework, $_CB_database; + + $categories = $this->getAllowedCategories( null, $forum ); + $pagingParams = $this->_getPaging( array(), array( 'fposts_' ) ); + $postsNumber = $this->params->get( 'postsNumber', 10 ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + switch ( $pagingParams['fposts_sortby'] ) { + case 'subjectASC': + $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; + break; + case 'subjectDESC': + $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; + break; + case 'categoryASC': + $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC'; + break; + case 'categoryDESC': + $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC'; + break; + case 'hitsASC': + $order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' ASC'; + break; + case 'hitsDESC': + $order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' DESC'; + break; + case 'dateASC': + $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; + break; + case 'dateDESC': + default: + $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; + break; + } + if ( strcasecmp( substr( $forum->version, 0, 3 ), '1.7' ) >= 0 ) { $cbUser =& CBuser::getInstance( (int) $user->id ); @@ -477,7 +633,10 @@ $access .= ( $categories ? "\n OR b." . $_CB_database->NameQuote( 'id' ) . " IN ( " . implode( ',', $categories ) . " ) )" : ' )' ); - $query = 'SELECT COUNT(*)' + $query = 'SELECT a.*' + . ', b.' . $_CB_database->NameQuote( 'id' ) . ' AS category' + . ', b.' . $_CB_database->NameQuote( 'name' ) . ' AS catname' + . ', c.' . $_CB_database->NameQuote( 'hits' ) . ' AS threadhits' . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . " AS a" . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . " AS b" . ' ON a.' . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) @@ -489,95 +648,65 @@ . "\n AND b." . $_CB_database->NameQuote( 'published' ) . " = 1" . "\n AND a." . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id . $access - . ( $pagingParams['fposts_search'] ? "\n AND ( a." . $_CB_database->NameQuote( 'subject' ) . " LIKE '%" . cbEscapeSQLsearch( cbGetEscaped( $pagingParams['fposts_search'] ) ) . "%' OR d." . $_CB_database->NameQuote( 'message' ) . " LIKE '%" . cbEscapeSQLsearch( $pagingParams['fposts_search'] ) . "%' )" : null ); - $_CB_database->setQuery( $query ); - $total = $_CB_database->loadResult(); + . ( $pagingParams['fposts_search'] ? "\n AND ( a." . $_CB_database->NameQuote( 'subject' ) . " LIKE '%" . cbEscapeSQLsearch( cbGetEscaped( $pagingParams['fposts_search'] ) ) . "%' OR d." . $_CB_database->NameQuote( 'message' ) . " LIKE '%" . cbEscapeSQLsearch( $pagingParams['fposts_search'] ) . "%' )" : null ) + . "\n ORDER BY " . $order; + $_CB_database->setQuery( $query, (int) ( $pagingParams['fposts_limitstart'] ? $pagingParams['fposts_limitstart'] : 0 ), (int) $postsNumber ); + $posts = $_CB_database->loadObjectList(); + } elseif ( class_exists( 'KunenaForumMessageHelper' ) ) { + $where = array(); - $cache[$user->id] = (int) $total; - } + if ( isset( $pagingParams['fposts_search'] ) && ( $pagingParams['fposts_search'] != '' ) ) { + $where[] = '( m.' . $_CB_database->NameQuote( 'subject' ) . ' LIKE ' . $_CB_database->Quote( '%' . $_CB_database->getEscaped( $pagingParams['fposts_search'], true ) . '%', false ) + . ' OR t.' . $_CB_database->NameQuote( 'message' ) . ' LIKE ' . $_CB_database->Quote( '%' . $_CB_database->getEscaped( $pagingParams['fposts_search'], true ) . '%', false ) . ' )'; + } - return $cache[$user->id]; - } - - /** - * Puts users posts into array - * - * @param moscomprofilerUser $user - * @param object $forum - * @return object - */ - function getUserPosts( $user, $forum ) { - global $_CB_framework, $_CB_database; - - $categories = $this->getAllowedCategories( null, $forum ); - $pagingParams = $this->_getPaging( array(), array( 'fposts_' ) ); - - switch ( $pagingParams['fposts_sortby'] ) { - case 'subjectASC': - $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; - break; - case 'subjectDESC': - $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; - break; - case 'categoryASC': - $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC'; - break; - case 'categoryDESC': - $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC'; - break; - case 'hitsASC': - $order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' ASC'; - break; - case 'hitsDESC': - $order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' DESC'; - break; + switch ( $pagingParams['fposts_sortby'] ) { + case 'subjectASC': + $order = 'm.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; + break; + case 'subjectDESC': + $order = 'm.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; + break; + case 'categoryASC': + $order = 'm.' . $_CB_database->NameQuote( 'catid' ) . ' ASC'; + break; + case 'categoryDESC': + $order = 'm.' . $_CB_database->NameQuote( 'catid' ) . ' DESC'; + break; + case 'hitsASC': + $order = 'm.' . $_CB_database->NameQuote( 'hits' ) . ' ASC'; + break; + case 'hitsDESC': + $order = 'm.' . $_CB_database->NameQuote( 'hits' ) . ' DESC'; + break; case 'dateASC': - $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; - break; - case 'dateDESC': - default: - $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; - break; - } + $order = 'm.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; + break; + case 'dateDESC': + default: + $order = 'm.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; + break; + } - if ( strcasecmp( substr( $forum->version, 0, 3 ), '1.7' ) >= 0 ) { - $cbUser =& CBuser::getInstance( (int) $user->id ); + $params = array( 'user' => (int) $user->id, + 'starttime' => -1, + 'where' => ( count( $where ) ? implode( ' AND ', $where ) : null ), + 'orderby' => $order + ); - if ( ! $cbUser ) { - $cbUser =& CBuser::getInstance( null ); - } + $posts = array_pop( KunenaForumMessageHelper::getLatestMessages( false, (int) ( $pagingParams['fposts_limitstart'] ? $pagingParams['fposts_limitstart'] : 0 ), (int) $postsNumber, $params ) ); - $access = "\n AND ( ( b." . $_CB_database->NameQuote( 'access' ) . " IN ( " . implode( ',', $cbUser->getAuthorisedViewLevelsIds( false ) ) . " )" - . ' AND b.' . $_CB_database->NameQuote( 'accesstype' ) . ' = ' . $_CB_database->Quote( 'joomla.level' ) . ' )' - . "\n OR ( b." . $_CB_database->NameQuote( 'pub_access' ) . " IN ( " . implode( ',', $_CB_framework->acl->get_groups_below_me( (int) $user->id, true ) ) . " )" - . ' AND b.' . $_CB_database->NameQuote( 'accesstype' ) . ' = ' . $_CB_database->Quote( 'none' ) . ' )'; + if ( $posts ) foreach ( $posts as $k => $post ) { + $posts[$k]->set( 'category', $post->getCategory()->id ); + $posts[$k]->set( 'catname', $post->getCategory()->name ); + $posts[$k]->set( 'threadhits', $post->getTopic()->hits ); + } } else { - $access = "\n AND ( b." . $_CB_database->NameQuote( 'pub_access' ) . " IN ( " . implode( ',', $_CB_framework->acl->get_groups_below_me( (int) $user->id, true ) ) . " )"; + $posts = null; } - $access .= ( $categories ? "\n OR b." . $_CB_database->NameQuote( 'id' ) . " IN ( " . implode( ',', $categories ) . " ) )" : ' )' ); - - $query = 'SELECT a.*' - . ', b.' . $_CB_database->NameQuote( 'id' ) . ' AS category' - . ', b.' . $_CB_database->NameQuote( 'name' ) . ' AS catname' - . ', c.' . $_CB_database->NameQuote( 'hits' ) . ' AS threadhits' - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . " AS a" - . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . " AS b" - . ' ON a.' . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) - . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . " AS c" - . ' ON a.' . $_CB_database->NameQuote( 'thread' ) . ' = c.' . $_CB_database->NameQuote( 'id' ) - . "\n LEFT JOIN " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages_text' ) . " AS d" - . ' ON a.' . $_CB_database->NameQuote( 'id' ) . ' = d.' . $_CB_database->NameQuote( 'mesid' ) - . "\n WHERE a." . $_CB_database->NameQuote( 'hold' ) . " = 0" - . "\n AND b." . $_CB_database->NameQuote( 'published' ) . " = 1" - . "\n AND a." . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id - . $access - . ( $pagingParams['fposts_search'] ? "\n AND ( a." . $_CB_database->NameQuote( 'subject' ) . " LIKE '%" . cbEscapeSQLsearch( cbGetEscaped( $pagingParams['fposts_search'] ) ) . "%' OR d." . $_CB_database->NameQuote( 'message' ) . " LIKE '%" . cbEscapeSQLsearch( $pagingParams['fposts_search'] ) . "%' )" : null ) - . "\n ORDER BY " . $order; - $_CB_database->setQuery( $query, (int) ( $pagingParams['fposts_limitstart'] ? $pagingParams['fposts_limitstart'] : 0 ), (int) $this->params->get( 'postsNumber', 10 ) ); - $posts = $_CB_database->loadObjectList(); - - return $posts; } + return $posts; + } /** * Count users total subscriptions for paging @@ -588,15 +717,31 @@ */ function getUserSubscriptionsTotal( $user, $forum ) { global $_CB_database; - - $query = 'SELECT COUNT(*)' - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) - . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id - ; - $_CB_database->setQuery( $query ); - $total = $_CB_database->loadResult(); - - return ( $total && is_numeric( $total ) ? $total : null ); + + static $cache = array(); + + if ( ! isset( $cache[$user->id] ) ) { + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'SELECT COUNT(*)' + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) + . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id; + $_CB_database->setQuery( $query ); + $total = $_CB_database->loadResult(); + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + $params = array( 'user' => (int) $user->id, + 'subscribed' => true, + 'starttime' => -1 + ); + + $total = array_shift( KunenaForumTopicHelper::getLatestTopics( false, 0, 0, $params ) ); + } else { + $total = 0; + } + + $cache[$user->id] = ( $total && is_numeric( $total ) ? $total : null ); + } + + return $cache[$user->id]; } /** @@ -608,45 +753,85 @@ */ function getUserSubscriptions( $user, $forum ) { global $_CB_database; - - $pagingParams = $this->_getPaging( array(), array( 'fsubs_' ) ); - $postsNumber = $this->params->get( 'postsNumber', 10 ); - - switch ( $pagingParams['fsubs_sortby'] ) { - case 'subjectASC': - $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; - break; - case 'subjectDESC': - $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; - break; - case 'categoryASC': - $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC'; - break; - case 'categoryDESC': - $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC'; - break; - case 'dateASC': - $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; - break; - case 'dateDESC': - default: - $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; - break; + + $pagingParams = $this->_getPaging( array(), array( 'fsubs_' ) ); + $postsNumber = $this->params->get( 'postsNumber', 10 ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + switch ( $pagingParams['fsubs_sortby'] ) { + case 'subjectASC': + $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; + break; + case 'subjectDESC': + $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; + break; + case 'categoryASC': + $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC'; + break; + case 'categoryDESC': + $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC'; + break; + case 'dateASC': + $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; + break; + case 'dateDESC': + default: + $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; + break; + } + + $query = 'SELECT a.*' + . ', b.' . $_CB_database->NameQuote( 'name' ) . ' AS catname' + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS a' + . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . ' AS b' + . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) . ' AS s' + . "\n WHERE a." . $_CB_database->NameQuote( 'id' ) . ' = s.' . $_CB_database->NameQuote( 'thread' ) + . "\n AND a." . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) + . "\n AND s." . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id + . "\n ORDER BY " . $order; + $_CB_database->setQuery( $query, (int) ( $pagingParams['fsubs_limitstart'] ? $pagingParams['fsubs_limitstart'] : 0 ), (int) $postsNumber ); + $subs = $_CB_database->loadObjectList(); + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + switch ( $pagingParams['fsubs_sortby'] ) { + case 'subjectASC': + $order = 'tt.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; + break; + case 'subjectDESC': + $order = 'tt.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; + break; + case 'categoryASC': + $order = 'tt.' . $_CB_database->NameQuote( 'category_id' ) . ' ASC'; + break; + case 'categoryDESC': + $order = 'tt.' . $_CB_database->NameQuote( 'category_id' ) . ' DESC'; + break; + case 'dateASC': + $order = 'tt.' . $_CB_database->NameQuote( 'first_post_time' ) . ' ASC'; + break; + case 'dateDESC': + default: + $order = 'tt.' . $_CB_database->NameQuote( 'first_post_time' ) . ' DESC'; + break; + } + + $params = array( 'user' => (int) $user->id, + 'subscribed' => true, + 'starttime' => -1, + 'orderby' => $order + ); + + $subs = array_pop( KunenaForumTopicHelper::getLatestTopics( false, (int) ( $pagingParams['fsubs_limitstart'] ? $pagingParams['fsubs_limitstart'] : 0 ), (int) $postsNumber, $params ) ); + + if ( $subs ) foreach ( $subs as $k => $sub ) { + $subs[$k]->set( 'time', $sub->first_post_time ); + $subs[$k]->set( 'catid', $sub->getCategory()->id ); + $subs[$k]->set( 'catname', $sub->getCategory()->name ); + $subs[$k]->set( 'thread', $sub->id ); + } + } else { + $subs = null; } - $query = 'SELECT a.*' - . ', b.' . $_CB_database->NameQuote( 'name' ) . ' AS catname' - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS a' - . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . ' AS b' - . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_subscriptions' ) . ' AS s' - . "\n WHERE a." . $_CB_database->NameQuote( 'id' ) . ' = s.' . $_CB_database->NameQuote( 'thread' ) - . "\n AND a." . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) - . "\n AND s." . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id - . "\n ORDER BY " . $order - ; - $_CB_database->setQuery( $query, (int) ( $pagingParams['fsubs_limitstart'] ? $pagingParams['fsubs_limitstart'] : 0 ), (int) $postsNumber ); - $subs = $_CB_database->loadObjectList(); - return ( $subs ? $subs : null ); } @@ -659,15 +844,31 @@ */ function getUserFavoritesTotal( $user, $forum ) { global $_CB_database; - - $query = 'SELECT COUNT(*)' - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) - . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id - ; - $_CB_database->setQuery( $query ); - $total = $_CB_database->loadResult(); - - return ( $total && is_numeric( $total ) ? $total : null ); + + static $cache = array(); + + if ( ! isset( $cache[$user->id] ) ) { + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'SELECT COUNT(*)' + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) + . "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id; + $_CB_database->setQuery( $query ); + $total = $_CB_database->loadResult(); + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + $params = array( 'user' => (int) $user->id, + 'favorited' => true, + 'starttime' => -1 + ); + + $total = array_shift( KunenaForumTopicHelper::getLatestTopics( false, 0, 0, $params ) ); + } else { + $total = null; + } + + $cache[$user->id] = ( $total && is_numeric( $total ) ? $total : null ); + } + + return $cache[$user->id]; } /** @@ -679,46 +880,86 @@ */ function getUserFavorites( $user, $forum ) { global $_CB_database; - - $pagingParams = $this->_getPaging( array(), array( 'ffavs_' ) ); - $postsNumber = $this->params->get( 'postsNumber', 10 ); - - switch ( $pagingParams['ffavs_sortby'] ) { - case 'subjectASC': - $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; - break; - case 'subjectDESC': - $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; - break; - case 'categoryASC': - $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC'; - break; - case 'categoryDESC': - $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC'; - break; - case 'dateASC': - $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; - break; - case 'dateDESC': - default: - $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; - break; + + $pagingParams = $this->_getPaging( array(), array( 'ffavs_' ) ); + $postsNumber = $this->params->get( 'postsNumber', 10 ); + + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + switch ( $pagingParams['ffavs_sortby'] ) { + case 'subjectASC': + $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; + break; + case 'subjectDESC': + $order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; + break; + case 'categoryASC': + $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC'; + break; + case 'categoryDESC': + $order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC'; + break; + case 'dateASC': + $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC'; + break; + case 'dateDESC': + default: + $order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC'; + break; + } + + $query = 'SELECT a.*' + . ', b.' . $_CB_database->NameQuote( 'name' ) . ' AS catname' + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS a' + . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . ' AS b' + . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) . ' AS s' + . "\n WHERE a." . $_CB_database->NameQuote( 'id' ) . ' = s.' . $_CB_database->NameQuote( 'thread' ) + . "\n AND a." . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) + . "\n AND s." . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id + . "\n ORDER BY " . $order; + $_CB_database->setQuery( $query, (int) ( $pagingParams['ffavs_limitstart'] ? $pagingParams['ffavs_limitstart'] : 0 ), (int) $postsNumber ); + $favs = $_CB_database->loadObjectList(); + } elseif ( class_exists( 'KunenaForumTopicHelper' ) ) { + switch ( $pagingParams['ffavs_sortby'] ) { + case 'subjectASC': + $order = 'tt.' . $_CB_database->NameQuote( 'subject' ) . ' ASC'; + break; + case 'subjectDESC': + $order = 'tt.' . $_CB_database->NameQuote( 'subject' ) . ' DESC'; + break; + case 'categoryASC': + $order = 'tt.' . $_CB_database->NameQuote( 'category_id' ) . ' ASC'; + break; + case 'categoryDESC': + $order = 'tt.' . $_CB_database->NameQuote( 'category_id' ) . ' DESC'; + break; + case 'dateASC': + $order = 'tt.' . $_CB_database->NameQuote( 'first_post_time' ) . ' ASC'; + break; + case 'dateDESC': + default: + $order = 'tt.' . $_CB_database->NameQuote( 'first_post_time' ) . ' DESC'; + break; + } + + $params = array( 'user' => (int) $user->id, + 'favorited' => true, + 'starttime' => -1, + 'orderby' => $order + ); + + $favs = array_pop( KunenaForumTopicHelper::getLatestTopics( false, (int) ( $pagingParams['ffavs_limitstart'] ? $pagingParams['ffavs_limitstart'] : 0 ), (int) $postsNumber, $params ) ); + + if ( $favs ) foreach ( $favs as $k => $fav ) { + $favs[$k]->set( 'time', $fav->first_post_time ); + $favs[$k]->set( 'catid', $fav->getCategory()->id ); + $favs[$k]->set( 'catname', $fav->getCategory()->name ); + $favs[$k]->set( 'thread', $fav->id ); + } + } else { + $favs = null; } - $query = 'SELECT a.*' - . ', b.' . $_CB_database->NameQuote( 'name' ) . ' AS catname' - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS a' - . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . ' AS b' - . ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_favorites' ) . ' AS s' - . "\n WHERE a." . $_CB_database->NameQuote( 'id' ) . ' = s.' . $_CB_database->NameQuote( 'thread' ) - . "\n AND a." . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' ) - . "\n AND s." . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id - . "\n ORDER BY " . $order - ; - $_CB_database->setQuery( $query, (int) ( $pagingParams['ffavs_limitstart'] ? $pagingParams['ffavs_limitstart'] : 0 ), (int) $postsNumber ); - $subs = $_CB_database->loadObjectList(); - - return ( $subs ? $subs : null ); + return ( $favs ? $favs : null ); } /** @@ -755,22 +996,28 @@ function getUserSettings( $user, $forum, $additional = null ) { global $_CB_database; - $cache = array(); + static $cache = array(); if ( ! isset( $cache[$user->id] ) ) { - $query = 'SELECT f.*' - . $additional - . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_users' ) . 'AS f' - . ', ' . $_CB_database->NameQuote( '#__users' ) . 'AS u' - . "\n WHERE f." . $_CB_database->NameQuote( 'userid' ) . " = u." . $_CB_database->NameQuote( 'id' ) - . "\n AND f." . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id - ; - $_CB_database->setQuery( $query, 0, 1 ); - $settings = null; - $_CB_database->loadObject( $settings ); - - $cache[$user->id] = ( $settings ? $settings : null ); + if ( ( $forum->prefix != 'kunena' ) || ( ( $forum->prefix == 'kunena' ) && ( ! class_exists( 'KunenaForum' ) ) ) ) { + $query = 'SELECT f.*' + . $additional + . "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_users' ) . 'AS f' + . ', ' . $_CB_database->NameQuote( '#__users' ) . 'AS u' + . "\n WHERE f." . $_CB_database->NameQuote( 'userid' ) . " = u." . $_CB_database->NameQuote( 'id' ) + . "\n AND f." . $_CB_database->NameQuote( 'userid' ) . " = " . (int) $user->id; + $_CB_database->setQuery( $query, 0, 1 ); + $settings = null; + $_CB_database->loadObject( $settings ); + } elseif ( class_exists( 'KunenaUser' ) ) { + $settings = KunenaUser::getInstance( (int) $user->id ); + } else { + $settings = null; + } + + $cache[$user->id] = ( $settings ? $settings : null ); } + return $cache[$user->id]; } @@ -806,16 +1053,20 @@ } elseif ( in_array( $forumType, array( 0, 4 ) ) && file_exists( $path . '/administrator/components/com_kunena/' ) ) { $forumParams->component = 'com_kunena'; if ( file_exists( $path . '/administrator/components/com_kunena/api.php' ) ) { - // Kunena 1.6: + // Kunena 1.6-2.0: $forumParams->prefix = 'kunena'; } else { // Kunena 1.0-1.5: $forumParams->prefix = 'fb'; } - if ( file_exists( $path . '/components/com_kunena/lib/kunena.config.class.php' ) ) { - $forumParams->config = $path . '/components/com_kunena/lib/kunena.config.class.php'; + if ( ! class_exists( 'KunenaForum' ) ) { + if ( file_exists( $path . '/components/com_kunena/lib/kunena.config.class.php' ) ) { + $forumParams->config = $path . '/components/com_kunena/lib/kunena.config.class.php'; + } else { + $forumParams->config = null; + } } else { - $forumParams->config = null; \ No newline at end of file + $forumParams->config = 'api'; \ No newline at end of file } } else { return null;