Select the search type
  • Site
  • Web
Search
You are here:  Support/Forums
Support

Bring2mind Forums

PrevPrev Go to previous topic
NextNext Go to next topic
Last Post 12/10/2009 5:52 PM by  Peter Donker
DMX 05.02.00 Released
 2 Replies
Sort:
You are not authorized to post a reply.
Author Messages
Peter Donker
Veteran Member
Veteran Member
Posts:4536


--
12/10/2009 2:58 PM

    Hi All,

    The new minor release 5.2 is finally out. Check out more here:

    http://www.bring2mind.net...-02-00-Released.aspx

    Change list:

    Enhancement: Overhaul of provider organization and loading
    New Feature: Now storage providers are accessible by all and can be changed
    New Feature: Amazon S3 storage provider
    Enhancement: Overhaul of search logic
    Fix: Lucene indexer now finds reshuffled content when searching within folder
    Enhancement: Entry attributes are typed before being used in token replace (e.g. templates)
    Enhancement: When only categories are displayed in Ajax view, the default (first) screen shows category contents
    Enhancement: Flexible root allows user based folders
    Fix: Changes to Sync Folder logic enhance performance
    Enhancement: Debug logging engine overhauled
    Enhancement: Root Category is now propegated to edit screen
    Fix: default view and edit now selectable in File and Extension edits
    Fix: Attributes with same name no longer cause UI crash
    Change: Attributes now use 'att' + [id] for their key in the UI to ensure uniqueness
    Change: Code added to prevent table inconsistencies in DMX_Entries
    Enhancement: Ability to email oneself a file is now a general option
    Enhancement: Maximum of 15 records in the log on the main Ajax UI details screen
    Enhancement: 'Empty Recycle Bin' implemented under Admin > Run Scripts as under Tools menu
    Enhancement: Maximum length of titles is increased to 1000 characters
    Change: Rearranged organization of templates under ViewTemplates. This makes it easier to copy from one module to another.
    Enhancement: Support for IIS 7 IPM now in the Web.Config edit screen
    Enhancement: Size of underlying content visible on folders
    Enhancement: clean up of old log files
    Change: Installation manual revised and rewritten
     

    As usual: check your license status before installing over your existing DMX. The service until period must end after today or you go back to unlicensed state! You can ignore this if you're on a trial license.

    Regards,

    Peter Donker

    Peter Donker
    Veteran Member
    Veteran Member
    Posts:4536


    --
    12/10/2009 5:50 PM

    In the first file that went out there appears to be an encoding issue with the latest SQL script which may give rise to the following error message for SPROC DMX_LimitSearch:

    Incorrect syntax near '%'

    If you examine the SQL you'll notice the '%' that is referred to is not preceded by a + as it should. This is probably due to an encoding issue of the file where the + is not correctly picked up by your DNN (note this doesn't happen on all installations, it passed unnoticed on our own servers). Below is a repair script for this issue. Copy and paste this to Host > SQL and 'run as script'.

    IF EXISTS (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}{objectQualifier}DMX_LimitSearch') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE {databaseOwner}{objectQualifier}DMX_LimitSearch
    GO

    CREATE PROCEDURE {databaseOwner}{objectQualifier}DMX_LimitSearch
     @PortalId Int,
     @SearchId nvarchar(50),
     @CollectionId Int,
     @OnlyLastVersion BIT,
     @HideDeleted BIT,
     @OnlyApproved BIT
    AS

    BEGIN
     IF @CollectionId > -1
     BEGIN
      DECLARE @entrypath VARCHAR(4000)
      SET @entrypath = (SELECT [Path]
       FROM {databaseOwner}{objectQualifier}DMX_Entries
       WHERE EntryId = @CollectionId);
      DELETE FROM {databaseOwner}{objectQualifier}DMX_SearchResults
       FROM {databaseOwner}{objectQualifier}DMX_SearchResults sr
       INNER JOIN {databaseOwner}{objectQualifier}DMX_Entries e ON sr.EntryId=e.EntryId
       WHERE NOT e.[Path] LIKE @entrypath+'%';
     END
     IF @OnlyLastVersion = 1
     BEGIN
      DELETE FROM {databaseOwner}{objectQualifier}DMX_SearchResults
       FROM {databaseOwner}{objectQualifier}DMX_SearchResults sr
       INNER JOIN {databaseOwner}{objectQualifier}DMX_Entries e ON sr.EntryId=e.EntryId
       WHERE NOT e.LastVersionId = e.EntryId;
     END
     IF @HideDeleted = 1
     BEGIN
      DELETE FROM {databaseOwner}{objectQualifier}DMX_SearchResults
       FROM {databaseOwner}{objectQualifier}DMX_SearchResults sr
       INNER JOIN {databaseOwner}{objectQualifier}DMX_Entries e ON sr.EntryId=e.EntryId
       WHERE e.Deleted = 1;
     END
     IF @OnlyApproved = 1
     BEGIN
      DELETE FROM {databaseOwner}{objectQualifier}DMX_SearchResults
       FROM {databaseOwner}{objectQualifier}DMX_SearchResults sr
       INNER JOIN {databaseOwner}{objectQualifier}DMX_Entries e ON sr.EntryId=e.EntryId
       WHERE e.IsApproved = 0;
     END
    END

    GO

    IF EXISTS (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}{objectQualifier}DMX_ResetFolderSizes') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE {databaseOwner}{objectQualifier}DMX_ResetFolderSizes
    GO

    CREATE PROCEDURE {databaseOwner}{objectQualifier}DMX_ResetFolderSizes
     @PortalId Int,
     @EntryId Int = -1
    AS

    BEGIN
     DISABLE TRIGGER {databaseOwner}{objectQualifier}DMX_EntryUpdatePath ON {databaseOwner}{objectQualifier}DMX_Entries;
     IF @EntryId > -1
     BEGIN
      DECLARE @entrypath VARCHAR(4000)
      SET @entrypath = (SELECT [Path]
        FROM {databaseOwner}{objectQualifier}DMX_Entries
        WHERE EntryId = @EntryId);
      UPDATE {databaseOwner}{objectQualifier}DMX_Entries
      SET FileSize=0
      WHERE PortalId=@PortalId
      AND @entrypath LIKE [Path]+'%'
      AND EntryType LIKE 'Collection%';
     END
     UPDATE {databaseOwner}{objectQualifier}DMX_Entries
     SET FileSize=
      (SELECT ISNULL(SUM(e1.FileSize), 0) FROM {databaseOwner}{objectQualifier}DMX_Entries e1
      WHERE e1.EntryType LIKE 'File%'
      AND e1.[Path] LIKE e.Path+'%'
      AND e1.PortalId=e.PortalId
      AND e1.LastVersionId=e1.EntryId)
     FROM {databaseOwner}{objectQualifier}DMX_Entries e
     WHERE e.EntryType LIKE 'Collection%'
      AND e.FileSize=0
      AND (e.PortalId=@PortalId OR @PortalId=-1);
     ENABLE TRIGGER {databaseOwner}{objectQualifier}DMX_EntryUpdatePath ON {databaseOwner}{objectQualifier}DMX_Entries;
    END

    GO

     

    EXEC {databaseOwner}{objectQualifier}DMX_ResetFolderSizes -1, -1;
    GO


    IF EXISTS (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}{objectQualifier}DMX_GetLogsByEntry') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE {databaseOwner}{objectQualifier}DMX_GetLogsByEntry
    GO

     

    CREATE PROCEDURE {databaseOwner}{objectQualifier}DMX_GetLogsByEntry
     @EntId INT,
     @MaxRecords INT
    AS

     

    IF @MaxRecords > 0
     BEGIN
      DECLARE @SQL varchar(max);
      SET @SQL = 'SELECT TOP ' + Convert(varchar, @MaxRecords);
      SET @SQL = @SQL + ' l.*, u.DisplayName';
      SET @SQL = @SQL + ' FROM {databaseOwner}{objectQualifier}Users u INNER JOIN {databaseOwner}{objectQualifier}DMX_Log l ON u.UserID = l.UserId';
      SET @SQL = @SQL + ' WHERE l.EntId = ' + Convert(varchar, @EntId) + ' ORDER BY l.Datime DESC';
      EXEC(@SQL);
     END
    ELSE
     SELECT
      l.*,
      u.DisplayName
     FROM
      {databaseOwner}{objectQualifier}Users u INNER JOIN {databaseOwner}{objectQualifier}DMX_Log l ON u.UserID = l.UserId
     WHERE
      l.EntId = @EntId
     ORDER BY l.Datime DESC;

    GO

    UPDATE {databaseOwner}{objectQualifier}DMX_Attributes
    SET [Key]='att'+CAST(AttributeId AS NVARCHAR(10))
    WHERE ISNULL([Key], '')=''
    GO

    IF EXISTS (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}{objectQualifier}DMX_AddAttribute') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE {databaseOwner}{objectQualifier}DMX_AddAttribute
    GO

    CREATE PROCEDURE {databaseOwner}{objectQualifier}DMX_AddAttribute
     @Addon NVarChar (50),
     @CollectionId Int,
     @ControlToLoad NVarChar (255),
     @IsPrivate Bit,
     @Key NVarChar (50),
     @PortalId Int,
     @Required Bit,
     @ResourceFile NVarChar (255),
     @ShowInUI Bit,
     @Values NVarChar (255),
     @ValueType NVarChar (30),
     @ViewOrder Int
    AS

    INSERT INTO {databaseOwner}{objectQualifier}DMX_Attributes (
     [Addon],
     [CollectionId],
     [ControlToLoad],
     [IsPrivate],
     [Key],
     [PortalId],
     [Required],
     [ResourceFile],
     [ShowInUI],
     [Values],
     [ValueType],
     [ViewOrder]
    ) VALUES (
     @Addon,
     @CollectionId,
     @ControlToLoad,
     @IsPrivate,
     @Key,
     @PortalId,
     @Required,
     @ResourceFile,
     @ShowInUI,
     @Values,
     @ValueType,
     @ViewOrder
    );
    UPDATE {databaseOwner}{objectQualifier}DMX_Attributes
    SET [Key]='att'+CAST(AttributeId AS NVARCHAR(10))
    WHERE ISNULL([Key], '')='';

    select SCOPE_IDENTITY()
    GO

    IF EXISTS (select * from dbo.sysobjects where id = object_id(N'{databaseOwner}{objectQualifier}DMX_GetPortal') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE {databaseOwner}{objectQualifier}DMX_GetPortal
    GO

    CREATE PROCEDURE {databaseOwner}{objectQualifier}DMX_GetPortal
     @PortalId INT,
     @Locale NVARCHAR(6)
    AS

    DECLARE @DNNVersion INT
    SET @DNNVersion = (SELECT MAX(v) FROM
    (SELECT Major * 10000 + Minor * 100 + Build AS v FROM {databaseOwner}{objectQualifier}Version WHERE ISNULL([Name], 'DNNCORP.CE') LIKE 'DNNCORP%') AS x)
    IF @DNNVersion > 50200
     BEGIN
      IF EXISTS(SELECT * FROM {databaseOwner}{objectQualifier}PortalLocalization WHERE PortalId=@PortalId AND CultureCode=@Locale)
      SELECT * FROM {databaseOwner}{objectQualifier}Portals p
       INNER JOIN {databaseOwner}{objectQualifier}PortalLocalization pl ON p.PortalId=pl.PortalId
       WHERE p.PortalId=@PortalId
       AND pl.CultureCode=@Locale
      ELSE
      SELECT * FROM {databaseOwner}{objectQualifier}Portals p
       INNER JOIN {databaseOwner}{objectQualifier}PortalLocalization pl ON p.PortalId=pl.PortalId
       WHERE p.PortalId=@PortalId
       AND pl.CultureCode=p.DefaultLanguage
     END
    ELSE
     BEGIN
      SELECT * FROM {databaseOwner}{objectQualifier}Portals
       WHERE PortalId=@PortalId
     END
    GO

     

     

    Peter Donker
    Veteran Member
    Veteran Member
    Posts:4536


    --
    12/10/2009 5:52 PM
    Another note on installation script issues. DNN 5.1 introduced a bit of extra code when scripts are run. This script ensures all procedures have correct permissions. Unfortunately in some installation this bit of code times out. The error message is:

    System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(SqlConnection connection, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText, SqlParameter[] commandParameters) at Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(String connectionString, CommandType commandType, String commandText) at DotNetNuke.Data.SqlDataProvider.GrantStoredProceduresPermission(String Permission, String LoginOrRole) if exists (select * from dbo.sysusers where name='VIMSDNNUser') begin declare @exec nvarchar(2000) declare @name varchar(150) declare sp_cursor cursor for select o.name as name from dbo.sysobjects o where ( OBJECTPROPERTY(o.id, N'IsProcedure') = 1 or OBJECTPROPERTY(o.id, N'IsExtendedProc') = 1 or OBJECTPROPERTY(o.id, N'IsReplProc') = 1 ) and OBJECTPROPERTY(o.id, N'IsMSShipped') = 0 and o.name not like N'#%%' and (left(o.name,len('vdnn_')) = 'vdnn_' or left(o.name,7) = 'aspnet_') open sp_cursor fetch sp_cursor into @name while @@fetch_status >= 0 begin select @exec = 'grant EXECUTE on ' + @name + ' to [VIMSDNNUser]' execute (@exec) fetch sp_cursor into @name end deallocate sp_cursor end

    Please ignore this error. It is run after all the other statements have run so your script should have installed.

    Peter
    You are not authorized to post a reply.