Approve all files in library

30/10/2012 21:43

 

internal static void ApproveAllSubfolders(SPFolder folder, StringBuilder writer, bool needsApproval)
        {
            if (folder.SubFolders != null)
            {
                writer.Append("\t");
                foreach (SPFolder subfolder in folder.SubFolders)
                {
                    if (subfolder.Name != "Forms")
                    {
                        ApproveAllSubfolders(subfolder, writer, needsApproval);
                    }
                }
            }
            writer.Append(string.Format("<b>{0}</b></br>", folder.Name));
            SPFileCollection files = folder.Files;
            foreach (SPFile file in files)
            {
                if (file.CheckOutType == SPFile.SPCheckOutType.None)
                {
                    //when file is checked - in
                    writer.Append(string.Format("<li>{0} - checked in</li>", file.Name));
                    PublishFile(file, needsApproval, writer);
                }
                else
                {
                    //when file is checked - out
                    writer.Append(string.Format("<li>{0} - checked out</li>", file.Name));
                    file.CheckIn("Checked in by code.");
                    PublishFile(file, needsApproval, writer);
                }
            }
        }
 
        internal static void PublishFile(SPFile file, bool needsApproval, StringBuilder writer)
        {
            if (needsApproval)
            {
                //approval workflow
                if (file.Level != SPFileLevel.Published)
                {
                    //if it's not published, publish it
                    writer.Append("We will approve file.</br>");
                    try
                    {
                        file.Approve("Approved by code.");
                    }
                    catch (Exception ex)
                    {
                        SPDiagnosticsService.Local.WriteTrace(0, category, TraceSeverity.Unexpected, "Aconcagua.Lukas.CustomActionMenuWithCode" + ex);
                        throw;
                    }
                }
            }
            else
            {
                //if approval is not enabled, only publishing
                if (file.Level != SPFileLevel.Published)
                {
                    writer.Append("We will publish file.</br>");
                    try
                    {
                        file.Publish("Published by code.");
                    }
                    catch (Exception ex)
                    {
                        SPDiagnosticsService.Local.WriteTrace(0, category, TraceSeverity.Unexpected, "Aconcagua.Lukas.CustomActionMenuWithCode" + ex);
                        throw;
                    }
                }
            }
 
        }