protected virtual bool TargetExists(ID targetID, string targetPath, Database database)
 {
     Assert.ArgumentNotNull(targetID, "targetID");
     Assert.ArgumentNotNull(targetPath, "targetPath");
     Assert.ArgumentNotNull(database, "database");
     if (!targetID.IsNull)
     {
         return(database.GetItem(targetID) != null);
     }
     return(!string.IsNullOrEmpty(targetPath) && (ItemUtil.GetItemFromPartialPath(targetPath, database) != null));
 }
        protected virtual bool ItemExists(ID itemId, string itemPath, Language itemLanguage, Sitecore.Data.Version itemVersion, Database database)
        {
            Assert.ArgumentNotNull(itemId, "itemId");
            Assert.ArgumentNotNull(database, "database");
            Assert.ArgumentNotNull(itemLanguage, "itemLanguage");
            Assert.ArgumentNotNull(itemVersion, "itemVersion");
            Item itemFromPartialPath = null;

            if (!itemId.IsNull)
            {
                itemFromPartialPath = database.GetItem(itemId);
                if (itemFromPartialPath == null)
                {
                    return(false);
                }
            }
            else if (!string.IsNullOrEmpty(itemPath))
            {
                itemFromPartialPath = ItemUtil.GetItemFromPartialPath(itemPath, database);
            }
            if (itemFromPartialPath != null)
            {
                if (itemLanguage == Language.Invariant)
                {
                    return(true);
                }

                itemFromPartialPath = itemFromPartialPath.Database.GetItem(itemFromPartialPath.ID, itemLanguage);
                if (itemFromPartialPath == null)
                {
                    return(false);
                }

                if (itemVersion == Sitecore.Data.Version.Latest)
                {
                    return(itemFromPartialPath.Versions.Count > 0);
                }

                foreach (Sitecore.Data.Version version in itemFromPartialPath.Versions.GetVersionNumbers())
                {
                    if (version.Number == itemVersion.Number)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }