Project

General

Profile

Bug #2994 ยป 2994.patch

krileon, 06 February 2012 20:23

View differences:

components/com_comprofiler/plugin/user/plug_cbsimpleboardtab/cb.simpleboardtab.model.php
* @param object $forum
* @return array
*/
function getAllowedCategories( $user, $forum ) {
function getAllowedCategories( $user_id, $forum ) {
global $_CB_framework, $_CB_database;
$categories = null;
if ( $_CB_framework->myId() != $user->id ) {
$query = 'SELECT ' . $_CB_database->NameQuote( 'allowed' )
. "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_sessions' )
. "\n WHERE " . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $_CB_framework->myId()
;
if ( $user_id === null ) {
$user_id = $_CB_framework->myId();
}
$cache = array();
if ( ! isset( $cache[$user_id] ) ) {
$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();
if ( ! $categories ) {
$query = 'SELECT ' . $_CB_database->NameQuote( 'id' )
. "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' )
. "\n WHERE " . $_CB_database->NameQuote( 'published' ) . ' = 1'
. "\n AND " . $_CB_database->NameQuote( 'pub_access' ) . ' = 0'
;
$_CB_database->setQuery( $query );
$categories = implode( ',', $_CB_database->loadResultArray() );
$categories = $_CB_database->loadResult();
if ( $categories && ( $categories != 'na' ) ) {
$allowed = explode( ',', $categories );
cbArrayToInts( $allowed );
} else {
$allowed = null;
}
$cache[$user_id] = $allowed;
}
return ( $categories && ( strtolower( $categories) != 'na' ) ? $categories : null );
return $cache[$user_id];
}
/**
......
* @return int
*/
function getUserPostTotal( $user, $forum ) {
global $_CB_database;
global $_CB_framework, $_CB_database;
$cache = array();
$cache = array();
if ( ! isset( $cache[$user->id] ) ) {
$categories = $this->getAllowedCategories( $user, $forum );
$pagingParams = $this->_getPaging( array(), array( 'fposts_' ) );
$query = 'SELECT COUNT(*)'
. "\n FROM " . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS a'
. ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . ' AS b'
. ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS c'
. ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages_text' ) . ' AS d'
. "\n WHERE a." . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' )
. "\n AND a." . $_CB_database->NameQuote( 'thread' ) . ' = c.' . $_CB_database->NameQuote( 'id' )
. "\n AND a." . $_CB_database->NameQuote( 'id' ) . ' = d.' . $_CB_database->NameQuote( 'mesid' )
. "\n AND a." . $_CB_database->NameQuote( 'hold' ) . ' = 0'
. "\n AND b." . $_CB_database->NameQuote( 'published' ) . ' = 1'
. "\n AND a." . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id
. ( $categories != null ? "\n AND b." . $_CB_database->NameQuote( 'id' ) . " IN ( " . $categories . " )" : null )
. ( $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 )
;
$categories = $this->getAllowedCategories( null, $forum );
$pagingParams = $this->_getPaging( array(), array( 'fposts_' ) );
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();
$cache[$user->id] = ( $total && is_numeric( $total ) ? $total : null );
$total = $_CB_database->loadResult();
$cache[$user->id] = (int) $total;
}
return $cache[$user->id];
}
......
* @return object
*/
function getUserPosts( $user, $forum ) {
global $_CB_database;
$categories = $this->getAllowedCategories( $user, $forum );
$pagingParams = $this->_getPaging( array(), array( 'fposts_' ) );
$postsNumber = $this->params->get( 'postsNumber', 10 );
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;
$order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' ASC';
break;
case 'subjectDESC':
$order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC';
break;
$order = 'a.' . $_CB_database->NameQuote( 'subject' ) . ' DESC';
break;
case 'categoryASC':
$order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC';
break;
$order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' ASC';
break;
case 'categoryDESC':
$order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC';
break;
$order = 'b.' . $_CB_database->NameQuote( 'id' ) . ' DESC';
break;
case 'hitsASC':
$order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' ASC';
break;
$order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' ASC';
break;
case 'hitsDESC':
$order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' DESC';
$order = 'c.' . $_CB_database->NameQuote( 'hits' ) . ' DESC';
break;
case 'dateASC':
$order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC';
break;
case 'dateASC':
$order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' ASC';
break;
case 'dateDESC':
default:
$order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC';
break;
$order = 'a.' . $_CB_database->NameQuote( 'time' ) . ' DESC';
break;
}
$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'
. ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_categories' ) . ' AS b'
. ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages' ) . ' AS c'
. ', ' . $_CB_database->NameQuote( '#__' . $forum->prefix . '_messages_text' ) . ' AS d'
. "\n WHERE a." . $_CB_database->NameQuote( 'catid' ) . ' = b.' . $_CB_database->NameQuote( 'id' )
. "\n AND a." . $_CB_database->NameQuote( 'thread' ) . ' = c.' . $_CB_database->NameQuote( 'id' )
. "\n AND a." . $_CB_database->NameQuote( 'id' ) . ' = d.' . $_CB_database->NameQuote( 'mesid' )
. "\n AND a." . $_CB_database->NameQuote( 'hold' ) . ' = 0'
. "\n AND b." . $_CB_database->NameQuote( 'published' ) . ' = 1'
. "\n AND a." . $_CB_database->NameQuote( 'userid' ) . ' = ' . (int) $user->id
. ( $categories != null ? "\n AND b." . $_CB_database->NameQuote( 'id' ) . " IN ( " . $categories . " )" : null )
. ( $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();
return ( $posts ? $posts : null );
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 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;
}
/**
    (1-1/1)