Exemple #1
0
        public string Execute([NotNull] string databaseName, [NotNull] string itemId, [NotNull] string languageName, [NotNull] string version, [NotNull] string fieldName, [NotNull] string xml)
        {
            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var item = database.GetItem(itemId, Language.Parse(languageName), Data.Version.Parse(version));

            if (item == null)
            {
                throw new Exception("Item not found");
            }

            var field = item.Fields[fieldName];

            item.Editing.BeginEdit();
            SetFieldValuePipeline.Run().WithParameters(field, xml);
            item.Editing.EndEdit();

            item = database.GetItem(itemId);

            var pipeline = GetFieldValuePipeline.Run().WithParameters(item, fieldName);

            return(pipeline.Value);
        }
Exemple #2
0
        public string Execute([NotNull] string databaseName, [NotNull] string id, [NotNull] string language, [NotNull] string version, [NotNull] string fieldName, [NotNull] string value)
        {
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));
            Assert.ArgumentNotNull(id, nameof(id));
            Assert.ArgumentNotNull(language, nameof(language));
            Assert.ArgumentNotNull(version, nameof(version));
            Assert.ArgumentNotNull(fieldName, nameof(fieldName));
            Assert.ArgumentNotNull(value, nameof(value));

            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var l = LanguageManager.GetLanguage(language);
            var v = Data.Version.Parse(version);

            var item = database.GetItem(id, l, v);

            if (database == null)
            {
                throw new Exception("Item not found");
            }

            item.Editing.BeginEdit();
            SetFieldValuePipeline.Run().WithParameters(item, fieldName, value);
            item.Editing.EndEdit();

            item.Fields.ReadAll();
            var field = item.Fields[fieldName];

            return(field == null ? string.Empty : field.ID + "," + item.Version);
        }
Exemple #3
0
        private bool UpdateItem(Query query, [NotNull] Item item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var find = GetStringValue(query, Find, item);
            var with = GetStringValue(query, With, item);

            var result = false;

            item.Editing.BeginEdit();

            if (Field != null)
            {
                var value = GetFieldValuePipeline.Run().WithParameters(item, Field).Value;

                value = value.Replace(find, with);

                if (value != item[Field])
                {
                    SetFieldValuePipeline.Run().WithParameters(item, Field, value);
                    result = true;
                }
            }
            else
            {
                foreach (Field field in item.Fields)
                {
                    var value = GetFieldValuePipeline.Run().WithParameters(field).Value;

                    value = value.Replace(find, with);

                    if (value == field.Value)
                    {
                        continue;
                    }

                    SetFieldValuePipeline.Run().WithParameters(field, value);
                    result = true;
                }
            }

            item.Editing.EndEdit();

            return(result);
        }
Exemple #4
0
        private void InsertItem(Query query, [NotNull] TemplateItem templateItem, [NotNull] string itemName, [NotNull] Item parent)
        {
            Debug.ArgumentNotNull(templateItem, nameof(templateItem));
            Debug.ArgumentNotNull(itemName, nameof(itemName));
            Debug.ArgumentNotNull(parent, nameof(parent));

            var isEditing = false;

            var item = parent.Add(itemName, templateItem);

            for (var index = 0; index < Values.Count; index++)
            {
                var columnName      = Columns[index];
                var valueExpression = Values[index];

                var obj = query.EvaluateSubQuery(valueExpression, item);

                var value = obj != null?obj.ToString() : string.Empty;

                if (value == null)
                {
                    continue;
                }

                if (!isEditing)
                {
                    item.Editing.BeginEdit();
                    isEditing = true;
                }

                SetFieldValuePipeline.Run().WithParameters(item, columnName, value);
            }

            if (isEditing)
            {
                item.Editing.EndEdit();
            }
        }
        public string Execute([NotNull] string databaseName, [NotNull] string parentPath, [NotNull] string newName, [NotNull] string templateName, [NotNull] string fields)
        {
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));
            Assert.ArgumentNotNull(parentPath, nameof(parentPath));
            Assert.ArgumentNotNull(newName, nameof(newName));
            Assert.ArgumentNotNull(templateName, nameof(templateName));
            Assert.ArgumentNotNull(fields, nameof(fields));

            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                return(string.Empty);
            }

            TemplateItem templateItem = database.GetItem(templateName);

            if (templateItem == null)
            {
                return(string.Empty);
            }

            Item item;

            if (ID.IsID(parentPath))
            {
                var parent = database.GetItem(parentPath);
                if (parent == null)
                {
                    return(string.Empty);
                }

                item = parent.Add(newName, templateItem);
            }
            else
            {
                TemplateItem folderTemplateItem = database.GetItem(TemplateIDs.Folder);
                Assert.IsNotNull(folderTemplateItem, "folderTemplateItem");

                item = database.CreateItemPath(parentPath + "/" + newName, folderTemplateItem, templateItem);
            }

            if (item == null)
            {
                return(string.Empty);
            }

            item.Editing.BeginEdit();

            var parts = fields.Split('|');

            for (var index = 0; index < parts.Length - 1; index += 2)
            {
                var fieldName = parts[index];
                var value     = parts[index + 1];

                SetFieldValuePipeline.Run().WithParameters(item, fieldName, value);
            }

            item.Editing.EndEdit();

            return(item.ID + "|" + item.ParentID);
        }
Exemple #6
0
        private void UpdateItem([NotNull] Query query, [NotNull] Item item)
        {
            Debug.ArgumentNotNull(item, nameof(item));

            var isEditing = false;
            var newPath   = string.Empty;

            foreach (var columnExpression in ColumnExpressions)
            {
                string value = null;

                var columnName = columnExpression.ColumnName;
                if (string.IsNullOrEmpty(columnName))
                {
                    continue;
                }

                if (columnExpression.FieldName != null)
                {
                    value = item[columnExpression.FieldName];
                }
                else if (columnExpression.Expression != null)
                {
                    var obj = query.EvaluateSubQuery(columnExpression.Expression, item);
                    value = obj != null?obj.ToString() : string.Empty;
                }

                if (value == null)
                {
                    continue;
                }

                if (!isEditing)
                {
                    item.Editing.BeginEdit();
                    isEditing = true;
                }

                switch (columnName.ToLowerInvariant())
                {
                case "@name":
                    item.Name = value;
                    break;

                case "@templatename":
                    ChangeTemplateByName(item, value);
                    break;

                case "@templateid":
                    ChangeTemplateById(item, value);
                    break;

                case "@path":
                    newPath = value;
                    break;

                default:
                    SetFieldValuePipeline.Run().WithParameters(item, columnName, value);
                    break;
                }
            }

            if (isEditing)
            {
                item.Editing.EndEdit();
            }

            if (!string.IsNullOrEmpty(newPath))
            {
                MoveItem(item, newPath);
            }
        }
Exemple #7
0
        public string Execute([NotNull] string xml, [NotNull] string databaseName)
        {
            Assert.ArgumentNotNull(xml, nameof(xml));
            Assert.ArgumentNotNull(databaseName, nameof(databaseName));

            if (string.IsNullOrEmpty(xml))
            {
                return(string.Empty);
            }

            var database = Factory.GetDatabase(databaseName);

            if (database == null)
            {
                throw new Exception("Database not found");
            }

            var items = new Hashtable();

            var doc = new XmlDocument();

            doc.LoadXml(xml);

            var nodeList = doc.SelectNodes("/sitecore/field");

            if (nodeList == null)
            {
                return(string.Empty);
            }

            foreach (XmlNode node in nodeList)
            {
                var id       = XmlUtil.GetAttribute("itemid", node);
                var language = XmlUtil.GetAttribute("language", node);
                var version  = XmlUtil.GetAttribute("version", node);
                var fieldid  = XmlUtil.GetAttribute("fieldid", node);
                var value    = XmlUtil.GetChildValue("value", node);
                var reset    = XmlUtil.GetAttribute("reset", node) == "1";

                var key = id + language + version;

                var item = items[key] as Item;
                if (item == null)
                {
                    item = database.Items[id, Language.Parse(language), Data.Version.Parse(version)];
                    if (item == null)
                    {
                        continue;
                    }

                    items[key] = item;

                    item.Editing.BeginEdit();
                }

                var field = item.Fields[ID.Parse(fieldid)];

                if (field == null)
                {
                    continue;
                }

                if (reset)
                {
                    field.Value = string.Empty;
                    field.Reset();
                    continue;
                }

                SetFieldValuePipeline.Run().WithParameters(field, value);
            }

            foreach (Item item in items.Values)
            {
                item.Editing.EndEdit();
            }

            return(string.Empty);
        }