protected
void
btnCheckIn_Click(
object
sender, EventArgs e)
{
pnlLog.Visible =
true
;
ctlAsyncLog.EnsureLog();
ctlAsyncLog.RunAsync(CheckInAllObjects, WindowsIdentity.GetCurrent());
}
private
void
CheckInAllObjects(
object
parameter)
{
var objectTypes = ObjectTypeManager.AllObjectTypes;
List<
string
> processTypes =
new
List<
string
>();
processTypes.Add(
"cms.document"
);
foreach
(
string
ot
in
objectTypes)
{
var typeInfo = ObjectTypeManager.GetTypeInfo(ot);
if
(typeInfo.SupportsLocking)
{
processTypes.Add(ot);
}
}
ctlAsyncLog.AddLog($
"Checking in objects from {processTypes.Count()} types.."
);
foreach
(
string
t
in
processTypes) CheckInObjects(t);
ctlAsyncLog.AddLog(
"Done!"
);
}
private
void
CheckInObjects(
string
type)
{
try
{
ctlAsyncLog.AddLog($
"Processing {type}.."
);
var oq =
new
ObjectQuery(type);
IEnumerable<BaseInfo> objects = oq.TypedResult;
foreach
(var baseInfo
in
objects)
{
if
(type.Equals(
"cms.document"
))
{
if
(baseInfo.GetIntegerValue(
"NodeSKUID"
, 0) > 0)
{
var node = baseInfo
as
SKUTreeNode;
node.SKU = SKUInfoProvider.GetSKUInfo(node.NodeSKUID);
if
(node.IsCheckedOut)
{
node.CheckIn();
node.Update();
}
}
else
{
var node = baseInfo
as
TreeNode;
if
(node.IsCheckedOut)
{
node.CheckIn();
node.Update();
}
}
}
else
{
if
(baseInfo.ObjectSettings.ObjectCheckedOutByUserID > 0)
{
baseInfo.ObjectSettings.ObjectCheckedOutByUserID = 0;
baseInfo.Update();
}
}
}
}
catch
(Exception e)
{
ctlAsyncLog.AddError(e.Message);
}
}