I created custom page to Un Publish and Archive Sitecore items. Sometimes the pages are not unpublish and archive sometimes its working as expected. can anyone help to sortout this issues.
private bool UnPublishItems(string ItemId, Database webdb)
{
Item item, masterItem = null;
ID itemID = null;
bool unPublished = false;
if (!string.IsNullOrEmpty(ItemId) &&
System.Text.RegularExpressions.Regex.IsMatch(ItemId, @"^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
itemID = new ID(ItemId);
item = webdb.GetItem(itemID);
if (item != null)
{
masterItem = GetItemById(ItemId);
Database[] databases = new Database[1] { webdb };
using (new SecurityDisabler())
{
masterItem.Editing.BeginEdit();
masterItem.Publishing.NeverPublish = true;
masterItem.Fields[Sitecore.FieldIDs.Workflow].Value = string.Empty;
masterItem.Fields[Sitecore.FieldIDs.WorkflowState].Value = string.Empty;
masterItem.Fields[Sitecore.FieldIDs.Lock].Value = "<r />";
masterItem.Editing.EndEdit();
Sitecore.Handle publishHandle = Sitecore.Publishing.PublishManager.PublishItem(masterItem, databases, webdb.Languages, false, false);
}
unPublished = true;
}
}
return unPublished;
}
private bool ArchiveItems(string item)
{
bool Archive = false;
Database Masterdb = Sitecore.Configuration.Factory.GetDatabase("master");
using (new SecurityDisabler())
{
Sitecore.Data.Archiving.Archive archive = Sitecore.Data.Archiving.ArchiveManager.GetArchive("archive", Masterdb);
if (archive != null)
{
if (System.Text.RegularExpressions.Regex.IsMatch(item, @"^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$", System.Text.RegularExpressions.RegexOptions.IgnoreCase))
{
Sitecore.Diagnostics.Assert.IsNotNull(item, "item");
Item i = GetItemById(item);
if (i != null)
{
archive.ArchiveItem(i);
Archive = true;
}
}
}
}
return Archive;
}