public static function fetchObjectsForQueryString( $queryString, $groupByLanguage = true, $languageCode = null, $limit = null, $countOnly = false )
    {
        if ( ( is_string( $queryString ) and $queryString === '' ) or
             ( is_array( $queryString ) and array_key_exists( 'searchQuery', $queryString ) and $queryString['searchQuery'] == '' )
           )
        {
            return null;
        }

        $fieldFilters = $custom = null;
        $objects = array();
        $conds = array();
        $sortClause = $groupByLanguage ? array( 'language_code' => 'asc' ) : null;

        if ( !is_array( $queryString ) )
        {
            $conds['search_query'] = $queryString;
        }
        else
        {
            $conds['search_query'] = @$queryString['fuzzy'] === true ? array( 'like', "%{$queryString['searchQuery']}%" ) : $queryString['searchQuery'];
        }

        if ( $languageCode and $languageCode !== '' )
            $conds['language_code'] = array( array( $languageCode, self::WILDCARD ) );

        if ( $countOnly )
        {
            return parent::count( self::definition(), $conds );
        }
        else
        {
            $rows = parent::fetchObjectList( self::definition(), $fieldFilters, $conds, $sortClause, $limit, false, false, $custom );
            foreach ( $rows as $row )
            {
                if ( ( $obj = eZContentObject::fetch( $row['contentobject_id'] ) ) !== null )
                {
                    if ( $groupByLanguage )
                    {
                        $objects[$row['language_code']][] = $obj;
                    }
                    else
                    {
                        $objects[] = $obj;
                    }
                }
            }
            return $objects;
        }
    }