public void CleanUp(string targetPath)
        {
            var mediaPath = ContextDatabase.GetItem(targetPath);

            if (mediaPath != null)
            {
                var allDescendants = mediaPath.Axes.GetDescendants();
                if (allDescendants != null && allDescendants.Any())
                {
                    foreach (var item in allDescendants)
                    {
                        Globals.LinkDatabase.UpdateItemVersionReferences(item);
                        var  itemLisnks    = Globals.LinkDatabase.GetReferrers(item);
                        bool anyLinkedItem = itemLisnks.Any(l => l.TargetItemID.ToString().ToLower() == item.ID.ToString().ToLower());
                        if (!anyLinkedItem)
                        {
                            using (new SecurityDisabler())
                            {
                                item.Delete();
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        public GCAccountSettings GetAccountSettings()
        {
            var accountSettingItem = ContextDatabase.GetItem(Constants.AccountItemId, ContextLanguage);

            if (accountSettingItem != null)
            {
                var tenantName  = string.Empty;
                var tenantMatch = System.Text.RegularExpressions.Regex.Match(accountSettingItem["Platform Url"], @"^(http(s)?:\/\/)?(?<tenant>.*)\.gathercontent\.com(\/)?$");
                if (tenantMatch.Groups["tenant"] != null)
                {
                    tenantName = tenantMatch.Groups["tenant"].Value.ToLower();
                }
                return(new GCAccountSettings
                {
                    TenantName = tenantName,
                    ApiUrl = "https://api.gathercontent.com/",                     //hardcoded value requested by client
                    Username = accountSettingItem["Account Owner Email Address"],
                    ApiKey = accountSettingItem["API Key"],
                    TemplateFolderId = accountSettingItem["Templates Root Folder"],
                    DateFormat = accountSettingItem["Date Format"],
                    DateTimeParseFormat = accountSettingItem["DateTime Field Format"],
                    GatherContentUrl = accountSettingItem["Platform Url"],
                    DropTreeHomeNode = accountSettingItem["DropTree Home Node"],
                    AccountItemId = accountSettingItem.ID.ToString()
                });
            }

            return(null);
        }
Exemple #3
0
        /// <summary>
        /// </summary>
        /// <param name="parentId"></param>
        /// <param name="cmsItem"></param>
        /// <returns></returns>
        public string GetItemId(string parentId, CmsItem cmsItem)
        {
            if (parentId == null)
            {
                return null;
            }

            using (new SecurityDisabler())
            {
                using (new LanguageSwitcher(cmsItem.Language))
                {
                    var validName = cmsItem.Title.ProposeValidItemName();
                    var parent = ContextDatabase.GetItem(new ID(parentId));
                    if (parent != null)
                    {
                        var items = parent.Axes.SelectItems(string.Format("./*[@@name='{0}']", validName));
                        if (items != null && items.Any())
                        {
                            return items.First().ID.ToString();
                        }
                    }
                }
            }

            return null;
        }
Exemple #4
0
        private void SetupLinkedGcTemplate(TemplateMapping templateMapping)
        {
            var linkedGcTemplate = ContextDatabase.GetTemplate(new ID(Constants.GCLinkItemTemplateID));

            if (templateMapping.CmsTemplate == null)
            {
                return;
            }
            var sitecoreTemplate = GetItem(templateMapping.CmsTemplate.TemplateId);

            if (sitecoreTemplate == null)
            {
                return;
            }
            var baseTemplates = sitecoreTemplate[FieldIDs.BaseTemplate];

            if (!baseTemplates.ToLower().Contains(linkedGcTemplate.ID.ToString().ToLower()))
            {
                using (new SecurityDisabler())
                {
                    sitecoreTemplate.Editing.BeginEdit();
                    sitecoreTemplate[Sitecore.FieldIDs.BaseTemplate] = string.Format("{0}|{1}", baseTemplates, linkedGcTemplate.ID);
                    sitecoreTemplate.Editing.EndEdit();
                }
            }
        }
Exemple #5
0
 /// <summary>
 /// </summary>
 /// <param name="parentId"></param>
 /// <param name="cmsItem"></param>
 /// <returns></returns>
 public string CreateNotMappedItem(string parentId, CmsItem cmsItem)
 {
     if (parentId != null)
     {
         using (new SecurityDisabler())
         {
             using (new LanguageSwitcher(cmsItem.Language))
             {
                 var templateItem = ContextDatabase.GetItem("/sitecore/templates/GatherContent/Not Mapped Item");
                 if (templateItem != null)
                 {
                     var template = ContextDatabase.GetTemplate(new ID(templateItem.ID.Guid));
                     var validName = cmsItem.Title.ProposeValidItemName();
                     var parent = ContextDatabase.GetItem(new ID(parentId));
                     if (parent != null)
                     {
                         try
                         {
                             var createdItem = parent.Add(validName, template);
                             return createdItem.ID.ToString();
                         }
                         catch (Exception)
                         {
                             throw new Exception(string.Format("Item cannot be created: parent='{0}l cmsItem.Title='{1}'", parent.Name, cmsItem.Title));
                         }
                     }
                 }
             }
         }
     }
     return null;
 }
Exemple #6
0
        private Item CreateOrGetProject(string gcProjectId, string gcProjectName)
        {
            var projectItem = GetProject(gcProjectId);

            if (projectItem != null)
            {
                return(projectItem);
            }

            var accountSettings = _accountsRepository.GetAccountSettings();

            var parentItem = GetItem(accountSettings.AccountItemId);

            using (new SecurityDisabler())
            {
                var template        = ContextDatabase.GetTemplate(new ID(Constants.GcProject));
                var validFolderName = ItemUtil.ProposeValidItemName(gcProjectName);
                projectItem = parentItem.Add(validFolderName, template);
                using (new SecurityDisabler())
                {
                    projectItem.Editing.BeginEdit();
                    projectItem.Fields["Id"].Value   = gcProjectId;
                    projectItem.Fields["Name"].Value = gcProjectName;
                    projectItem.Editing.EndEdit();
                }
                CreateProjectFolders(projectItem.ID.ToString());
            }

            return(projectItem);
        }
Exemple #7
0
        /// <summary>
        /// </summary>
        /// <param name="parentId"></param>
        /// <param name="cmsItem"></param>
        /// <param name="mappingId"></param>
        /// <param name="gcPath"></param>
        public string AddNewVersion(string parentId, CmsItem cmsItem, string mappingId, string gcPath)
        {
            if (parentId == null)
            {
                return null;
            }

            using (new SecurityDisabler())
            {
                using (new LanguageSwitcher(cmsItem.Language))
                {
                    var validName = cmsItem.Title.ProposeValidItemName();
                    var parent = ContextDatabase.GetItem(new ID(parentId));
                    if (parent == null)
                    {
                        return null;
                    }

                    var items = parent.Axes.SelectItems(string.Format("./*[@@name='{0}']", validName));
                    if (items == null)
                    {
                        return null;
                    }

                    items = items.Where(item => item["GCPath"] == gcPath).ToArray();

                    foreach (var item in items)
                    {
                        var newVersion = item.Versions.AddVersion();

                        try
                        {
                            EnsureMetaTemplateInherited(newVersion.Template);
                            var idField = cmsItem.Fields.FirstOrDefault(f => f.TemplateField.FieldName == GcContentId);
                            if (idField != null)
                            {
                                newVersion.Editing.BeginEdit();

                                newVersion.Fields[GcContentId].Value = idField.Value.ToString();
                                var isoDate = DateUtil.ToIsoDate(DateTime.UtcNow);
                                newVersion.Fields[LastSyncDate].Value = isoDate;
                                newVersion.Fields[MappingId].Value = mappingId;
                                newVersion.Fields[GcPath].Value = gcPath;

                                newVersion.Editing.EndEdit();
                            }
                            return newVersion.ID.ToString();
                        }
                        catch (Exception ex)
                        {
                            Log.Error("cannot update mapped item.", ex, this);
                            throw new Exception(string.Format("Your template({0}) is not inherited from the GC Linked Item.", newVersion.TemplateName));
                        }
                    }
                }
            }
            return null;
        }
Exemple #8
0
        protected override IEnumerable <Item> GetJobItems(ID rootFolderId)
        {
            var folder = ContextDatabase?.GetItem(rootFolderId);

            if (folder == null)
            {
                return(Enumerable.Empty <Item>());
            }

            return(folder.Axes.GetDescendants().Where(i =>
                                                      TemplateManager.IsFieldPartOfTemplate(SitecronConstants.SiteCronFieldIds.CronExpression, i)));
        }
        public MongoPasswordData(string connectionString)
        {
            MongoClient       = new MongoClient(connectionString);
            ContextDatabase   = MongoClient.GetDatabase(_contextDatabase);
            ContextCollection = ContextDatabase.GetCollection <BsonDocument>(_contextColection);
            List <BsonDocument> documents = ContextCollection.Find(new BsonDocument()).ToList();

            if (documents.Count > 0)
            {
                foreach (BsonDocument doc in documents)
                {
                    passwords.Add(BsonSerializer.Deserialize <Password>(doc));
                }
            }
        }
        public ApiStudentController(ContextDatabase context)
        {
            _context = context;

            if (_context != null && !_context.Students.Any())
            {
                // Create a new TodoItem if collection is empty,
                // which means you can't delete all TodoItems.
                _context.Students.Add(new StudentViewModel()
                {
                    Name = "Student 1", Address = "Address 1", Email = "Email 1"
                });
                _context.SaveChanges();
            }
        }
Exemple #11
0
        public void ExpandLinksInText(string cmsRootId, bool includeDescendants)
        {
            Item root = ContextDatabase.GetItem(ID.Parse(cmsRootId));

            if (root == null)
            {
                return;
            }

            var baseUrl = _accountsRepository.GetAccountSettings().GatherContentUrl;
            string pattern = StringUtil.EnsurePostfix('/', baseUrl.Replace("/", "\\/")) + "item\\/";
            Regex rgx = new Regex(pattern + "(\\d+)");

            ExpandLinksInTextRecursive(root, rgx, pattern, includeDescendants);
        }
Exemple #12
0
        private void CreateProjectFolders(string id)
        {
            var names = new[] { Constants.MappingFolderName };

            foreach (var name in names)
            {
                using (new SecurityDisabler())
                {
                    var folder          = GetItem(id);
                    var project         = ContextDatabase.GetTemplate(new ID(Constants.GcFolderId));
                    var validFolderName = ItemUtil.ProposeValidItemName(name);
                    folder.Add(validFolderName, project);
                }
            }
        }
Exemple #13
0
        public string AddNewVersion(CmsItem cmsItem)
        {
            if (cmsItem == null)
            {
                return null;
            }

            using (new SecurityDisabler())
            {
                using (new LanguageSwitcher(cmsItem.Language))
                {
                    var item = ContextDatabase.GetItem(new ID(cmsItem.Id));
                    var newVersion = item?.Versions.AddVersion();
                    return newVersion?.ID.ToString();
                }
            }
        }
        private List <Item> GetSolrJobs()
        {
            List <Item> siteCronItems = new List <Item>();

            try
            {
                var folder = ContextDatabase?.GetItem(SitecronConstants.ItemIds.RootFolderID);
                if (folder == null)
                {
                    return(siteCronItems);
                }
                List <ID> validTemplates          = new List <ID>();
                string[]  configSiteCronTemplates = Settings.GetSetting(SitecronConstants.SettingsNames.SiteCronValidTemplates, "").Trim().Replace(" ", "").Split(new char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries);

                foreach (string templateId in configSiteCronTemplates)
                {
                    ID testId;
                    if (ID.TryParse(templateId, out testId))
                    {
                        validTemplates.Add(testId);
                    }
                }

                if (validTemplates.Any())
                {
                    var index = ContentSearchManager.GetIndex(Settings.GetSetting(SitecronConstants.SettingsNames.SiteCronGetItemsIndex, "sitecore_master_index").Trim());
                    if (index != null)
                    {
                        using (var context = index.CreateSearchContext())
                        {
                            var query = PredicateBuilder.True <SearchResultItem>();
                            query = query.And(i => i.Paths.Contains(folder.ID));
                            query = query.And(i => validTemplates.Contains(i.TemplateId));

                            var results = context.GetQueryable <SearchResultItem>().Where(query).GetResults();
                            siteCronItems.AddRange(results.Select(i => i.Document.GetItem()));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error("SiteCron IndexJobProvider ERROR: " + ex.Message, ex, this);
            }
            return(siteCronItems);
        }
Exemple #15
0
        /// <summary>
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="language"></param>
        /// <param name="readAllFields"></param>
        /// <returns></returns>
        public CmsItem GetItem(string itemId, string language, bool readAllFields = false)
        {
            var item = ContextDatabase.GetItem(itemId);

            if (item != null)
            {
                var cmsItem = new CmsItem
                {
                    Id       = item.ID.ToString(),
                    Title    = item.Name,
                    Language = item.Language.ToString(),
                };

                cmsItem.Fields.Add(new CmsField
                {
                    TemplateField = new CmsTemplateField {
                        FieldName = "GC Content Id"
                    },
                    Value = item[GcContentId]
                });

                cmsItem.Fields.Add(new CmsField
                {
                    TemplateField = new CmsTemplateField {
                        FieldName = "Last Sync Date"
                    },
                    Value = DateUtil.IsoDateToDateTime(item[LastSyncDate])
                });

                cmsItem.Fields.Add(new CmsField
                {
                    TemplateField = new CmsTemplateField {
                        FieldName = "Template"
                    },
                    Value = item.TemplateName
                });


                if (readAllFields)
                {
                    //cmsItem.Fields
                }
                return(cmsItem);
            }
            return(null);
        }
 /// <summary>
 /// </summary>
 /// <param name="parentId"></param>
 /// <param name="cmsItem"></param>
 /// <param name="mappingId"></param>
 /// <param name="gcPath"></param>
 public string CreateMappedItem(string parentId, CmsItem cmsItem, string mappingId, string gcPath)
 {
     if (parentId != null)
     {
         using (new SecurityDisabler())
         {
             using (new LanguageSwitcher(cmsItem.Language))
             {
                 using (new EnforceVersionPresenceDisabler())
                 {
                     var template  = ContextDatabase.GetTemplate(new ID(cmsItem.Template.TemplateId));
                     var validName = ItemUtil.ProposeValidItemName(cmsItem.Title);
                     var parent    = ContextDatabase.GetItem(new ID(parentId));
                     if (parent != null)
                     {
                         var createdItem = parent.Add(validName, template);
                         Log.Error("createdItem is null:" + (createdItem == null), this);
                         try
                         {
                             EnsureMetaTemplateInherited(createdItem.Template);
                             var idField = cmsItem.Fields.FirstOrDefault(f => f.TemplateField.FieldName == GcContentId);
                             if (idField != null)
                             {
                                 createdItem.Editing.BeginEdit();
                                 createdItem.Fields[GcContentId].Value = idField.Value.ToString();
                                 var isoDate = DateUtil.ToIsoDate(DateTime.UtcNow);
                                 createdItem.Fields[LastSyncDate].Value = isoDate;
                                 createdItem.Fields[MappingId].Value    = mappingId;
                                 createdItem.Fields[GcPath].Value       = gcPath;
                                 createdItem.Editing.EndEdit();
                             }
                             return(createdItem.ID.ToString());
                         }
                         catch (Exception ex)
                         {
                             Log.Error("cannot create mapped item.", ex, this);
                             throw new Exception(string.Format("Your template({0}) is not inherited from the GC Linked Item.", createdItem.TemplateName));
                         }
                     }
                 }
             }
         }
     }
     return(null);
 }
        private void CreateFieldMapping(Item templateMappingItem, FieldMapping fieldMapping)
        {
            var validName = ItemUtil.ProposeValidItemName(fieldMapping.GcField.Name + " " + fieldMapping.GcField.Id);

            using (new SecurityDisabler())
            {
                var mapping = ContextDatabase.GetTemplate(new ID(Constants.GcFieldMapping));

                var createdItem = templateMappingItem.Add(validName, mapping);
                using (new SecurityDisabler())
                {
                    createdItem.Editing.BeginEdit();
                    createdItem.Fields["GC Field"].Value       = fieldMapping.GcField.Name;
                    createdItem.Fields["GC Field Id"].Value    = fieldMapping.GcField.Id;
                    createdItem.Fields["Sitecore Field"].Value = fieldMapping.CmsField.TemplateField.FieldId;
                    createdItem.Editing.EndEdit();
                }
            }
        }
Exemple #18
0
        private Item CreateTemplateMapping(TemplateMapping templateMapping)
        {
            var scProject = CreateOrGetProject(templateMapping.GcProjectId, templateMapping.GcProjectName);

            if (scProject == null)
            {
                return(null);
            }

            var mappingsFolder = GetMappingFolder(scProject);

            if (mappingsFolder == null)
            {
                return(null);
            }

            using (new SecurityDisabler())
            {
                var mapping = ContextDatabase.GetTemplate(new ID(Constants.GcTemplateMapping));

                SetupLinkedGcTemplate(templateMapping);

                var validFolderName = ItemUtil.ProposeValidItemName(templateMapping.GcTemplate.GcTemplateName);
                var createdItem     = mappingsFolder.Add(validFolderName, mapping);
                using (new SecurityDisabler())
                {
                    createdItem.Editing.BeginEdit();
                    createdItem.Fields["Sitecore Template"].Value = templateMapping.CmsTemplate.TemplateId;
                    createdItem.Fields["Default Location"].Value  = templateMapping.DefaultLocationId;
                    if (!string.IsNullOrEmpty(templateMapping.MappingTitle))
                    {
                        createdItem.Fields["Template mapping title"].Value = templateMapping.MappingTitle;
                    }
                    createdItem.Fields["GC Template"].Value        = templateMapping.GcTemplate.GcTemplateId;
                    createdItem.Fields["Last Mapped Date"].Value   = DateUtil.ToIsoDate(DateTime.Now);
                    createdItem.Fields["Last Updated in GC"].Value = templateMapping.LastUpdatedDate;
                    createdItem.Editing.EndEdit();
                }

                return(createdItem);
            }
        }
        public GCAccountSettings GetAccountSettings()
        {
            var accountSettingItem = ContextDatabase.GetItem(Constants.AccountItemId, ContextLanguage);

            if (accountSettingItem != null)
            {
                return(new GCAccountSettings
                {
                    ApiUrl = "https://api.gathercontent.com/", //hardcoded value requested by client
                    Username = accountSettingItem["Account Owner Email Address"],
                    ApiKey = accountSettingItem["API Key"],
                    TemplateFolderId = accountSettingItem["Templates Root Folder"],
                    DateFormat = accountSettingItem["Date Format"],
                    GatherContentUrl = accountSettingItem["Platform Url"],
                    DropTreeHomeNode = accountSettingItem["DropTree Home Node"],
                    AccountItemId = accountSettingItem.ID.ToString()
                });
            }

            return(null);
        }
Exemple #20
0
 /// <summary>
 /// </summary>
 /// <param name="parentId"></param>
 /// <param name="cmsItem"></param>
 /// <param name="mappingId"></param>
 /// <param name="gcPath"></param>
 /// <returns></returns>
 public bool IfMappedItemExists(string parentId, CmsItem cmsItem, string mappingId, string gcPath)
 {
     if (parentId != null)
     {
         using (new SecurityDisabler())
         {
             using (new LanguageSwitcher(cmsItem.Language))
             {
                 var validName = ItemUtil.ProposeValidItemName(cmsItem.Title);
                 var parent    = ContextDatabase.GetItem(new ID(parentId));
                 if (parent != null)
                 {
                     var items = parent.Axes.SelectItems(string.Format("./*[@@name='{0}']", validName));
                     if (items != null && items.Any(item => item["GCPAth"] == gcPath))
                     {
                         return(true);
                     }
                 }
             }
         }
     }
     return(false);
 }
Exemple #21
0
 /// <summary>
 /// </summary>
 /// <param name="parentId"></param>
 /// <param name="cmsItem"></param>
 /// <returns></returns>
 public bool IfNotMappedItemExists(string parentId, CmsItem cmsItem)
 {
     if (parentId != null)
     {
         using (new SecurityDisabler())
         {
             using (new LanguageSwitcher(cmsItem.Language))
             {
                 var validName = cmsItem.Title.ProposeValidItemName();
                 var parent = ContextDatabase.GetItem(new ID(parentId));
                 if (parent != null)
                 {
                     var items = parent.Axes.SelectItems(string.Format("./*[@@name='{0}']", validName));
                     if (items != null && items.Any())
                     {
                         return true;
                     }
                 }
             }
         }
     }
     return false;
 }
        protected override IEnumerable <Item> GetJobItems(ID rootFolderId)
        {
            List <Item> siteCronItems = new List <Item>();

            var folder = ContextDatabase?.GetItem(rootFolderId);

            if (folder == null)
            {
                return(Enumerable.Empty <Item>());
            }

            var autoFolderItems = folder.Axes.GetDescendants().Where(i =>
                                                                     TemplateManager.IsFieldPartOfTemplate(SitecronConstants.SiteCronFieldIds.CronExpression, i));

            if (autoFolderItems != null && autoFolderItems.Any())
            {
                siteCronItems.AddRange(autoFolderItems);
            }

            var solrItems = GetSolrJobs();

            if (!solrItems.Any())
            {
                //ERROR: There is no method 'GetResults' on type 'Sitecore.ContentSearch.Linq.QueryableExtensions'
                Log.Warn("SiteCron IndexJobProvider got no results. Trying again assuming its Solr Initialization issue.", this);
                //might be caused due to solr not initializing
                System.Threading.Thread.Sleep(3000);
                solrItems = GetSolrJobs();
            }

            if (solrItems != null && solrItems.Any())
            {
                siteCronItems.AddRange(solrItems.Where(i => !siteCronItems.Contains(i)));
            }

            return(siteCronItems);
        }
Exemple #23
0
 public VentaRepository(ContextDatabase contextDatabase)
 {
     _contextDatabase = contextDatabase;
 }
Exemple #24
0
 public ProductRepository(ContextDatabase contextDatabase)
 {
     _contextDatabase = contextDatabase;
 }
 public SportSupplementRepository(ContextDatabase _context)
 {
     this.context = _context;
 }
Exemple #26
0
 public ShippingRepository(ContextDatabase _context)
 {
     this.context = _context;
 }
Exemple #27
0
 public RepositoryManager(ContextDatabase repositoryContext)
 {
     _repositoryContext = repositoryContext;
 }
Exemple #28
0
 public UserRepositry(ContextDatabase _context)
 {
     this.context = _context;
 }
Exemple #29
0
 public CategoryRepository(ContextDatabase _context)
 {
     this.context = _context;
 }
 public NutritionBlogRepository(ContextDatabase _context)
 {
     this.context = _context;
 }