/**
  * Override to add ReadPermissionOptimization query parts.
  * @param string $tableName
  * @param RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter
  * @param null|int  $offset
  * @param null|int  $count
  * @param null|string $where
  * @param null|string $orderBy
  * @param bool $selectCount
  * @param bool $selectDistinct
  * @param array $quotedExtraSelectColumnNameAndAliases
  * @return string
  * @throws NoCurrentUserSecurityException
  */
 public static function makeSubsetOrCountSqlQuery($tableName, RedBeanModelJoinTablesQueryAdapter $joinTablesAdapter = null, $offset = null, $count = null, $where = null, $orderBy = null, $selectCount = false, $selectDistinct = false, array $quotedExtraSelectColumnNameAndAliases = array())
 {
     assert('is_string($tableName) && $tableName != ""');
     assert('$offset  === null || is_integer($offset)  && $offset  >= 0');
     assert('$count   === null || is_integer($count)   && $count   >= 1');
     assert('$where   === null || is_string ($where)   && $where   != ""');
     assert('$orderBy === null || is_string ($orderBy) && $orderBy != ""');
     assert('is_bool($selectCount)');
     assert('is_bool($selectDistinct)');
     $user = Yii::app()->user->userModel;
     if (!$user instanceof User) {
         throw new NoCurrentUserSecurityException();
     }
     if ($joinTablesAdapter == null) {
         $joinTablesAdapter = new RedBeanModelJoinTablesQueryAdapter(get_called_class());
     }
     static::resolveReadPermissionsOptimizationToSqlQuery($user, $joinTablesAdapter, $where, $selectDistinct);
     return parent::makeSubsetOrCountSqlQuery($tableName, $joinTablesAdapter, $offset, $count, $where, $orderBy, $selectCount, $selectDistinct, $quotedExtraSelectColumnNameAndAliases);
 }