public DateTime GetLastPublishedDateByUri(string uri)
        {
            TcmUri tcmUri = new TcmUri(uri);

            Tridion.ContentDelivery.Meta.IComponentMeta componentMeta = GetTridionComponentMetaFactory(tcmUri.PublicationId).GetMeta(tcmUri.ItemId);
            return(componentMeta == null ? DateTime.MinValue : componentMeta.LastPublicationDate);
        }
        public DateTime GetLastPublishedDate(string uri)
        {
            TcmUri tcmUri = new TcmUri(uri);

            TMeta.IComponentMeta cmeta = GetComponentMetaFactory(tcmUri.PublicationId).GetMeta(tcmUri.ItemId);
            return(cmeta == null ? DateTime.Now : cmeta.LastPublicationDate);
        }
Example #3
0
 public IBinaryMeta GetBinaryMetaByUri(string uri)
 {
     Tridion.ContentDelivery.Meta.BinaryMeta binaryMeta = null;
     binaryMeta = BinaryMetaFactory.GetMeta(uri);
     if (binaryMeta == null)
     {
         LoggerService.Debug($"cannot find binary with uri {uri}");
         return(null);
     }
     DD4T.ContentModel.BinaryMeta bm = new ContentModel.BinaryMeta()
     {
         Id        = uri,
         VariantId = binaryMeta.VariantId,
     };
     Tridion.ContentDelivery.Meta.IComponentMeta componentMeta = GetTridionComponentMetaFactory(binaryMeta.PublicationId).GetMeta(binaryMeta.Id);
     if (componentMeta == null)
     {
         LoggerService.Debug($"no component metadata found for binary with uri {uri}");
         bm.HasLastPublishedDate = false;
         return(bm);
     }
     bm.HasLastPublishedDate = true;
     bm.LastPublishedDate    = componentMeta.LastPublicationDate;
     LoggerService.Debug(string.Format("returning binary for uri {0} with the following metadata: Id = {1}, VariantId = {2}, HasLastPublishDate = {3}, lastPublishDate = {4}", uri, bm.Id, bm.VariantId, bm.HasLastPublishedDate, bm.LastPublishedDate));
     return(bm);
 }
Example #4
0
        /// <summary>
        /// Creates a lightweight DD4T Component that contains enough information such that the semantic model builder can cope and build a strongly typed model from it.
        /// </summary>
        /// <param name="componentMeta">A <see cref="DD4T.ContentModel.IComponentMeta"/> instance obtained from CD API.</param>
        /// <returns>A DD4T Component.</returns>
        private static IComponent CreateComponent(IComponentMeta componentMeta)
        {
            Component component = new Component
            {
                Id = $"tcm:{componentMeta.PublicationId}-{componentMeta.Id}",
                LastPublishedDate = componentMeta.LastPublicationDate,
                RevisionDate      = componentMeta.ModificationDate,
                Schema            = new Schema
                {
                    PublicationId = componentMeta.PublicationId.ToString(),
                    Id            = $"tcm:{componentMeta.PublicationId}-{componentMeta.SchemaId}"
                },
                MetadataFields = new FieldSet()
            };

            FieldSet metadataFields = new FieldSet();

            component.MetadataFields.Add("standardMeta", new Field {
                EmbeddedValues = new List <FieldSet> {
                    metadataFields
                }
            });
            foreach (DictionaryEntry de in componentMeta.CustomMeta.NameValues)
            {
                object v = ((NameValuePair)de.Value).Value;
                if (v == null)
                {
                    continue;
                }
                string k = de.Key.ToString();
                metadataFields.Add(k, new Field {
                    Name = k, Values = new List <string> {
                        v.ToString()
                    }
                });
            }

            // The semantic mapping requires that some metadata fields exist. This may not be the case so we map some component meta properties onto them
            // if they don't exist.
            if (!metadataFields.ContainsKey("dateCreated"))
            {
                metadataFields.Add("dateCreated", new Field {
                    Name = "dateCreated", DateTimeValues = new List <DateTime> {
                        componentMeta.LastPublicationDate
                    }
                });
            }

            if (!metadataFields.ContainsKey("name"))
            {
                metadataFields.Add("name", new Field {
                    Name = "name", Values = new List <string> {
                        componentMeta.Title
                    }
                });
            }

            return(component);
        }
Example #5
0
        public IBinaryMeta GetBinaryMetaByUrl(string url)
        {
            LoggerService.Debug($"started GetBinaryMetaByUrl for url {url} with publication id {PublicationId}");
            string encodedUrl = HttpUtility.UrlPathEncode(url); // ?? why here? why now?

            LoggerService.Debug($"using encodedUrl: {encodedUrl}");
            Tridion.ContentDelivery.Meta.BinaryMeta binaryMeta = null;
            if (this.PublicationId == 0)
            {
                IList metas = BinaryMetaFactory.GetMetaByUrl(encodedUrl);
                if (metas.Count == 0)
                {
                    return(null);
                }

                binaryMeta = metas[0] as Tridion.ContentDelivery.Meta.BinaryMeta;
            }
            else
            {
                binaryMeta = BinaryMetaFactory.GetMetaByUrl(this.PublicationId, encodedUrl);
            }
            if (binaryMeta == null)
            {
                LoggerService.Debug($"cannot find binary with URL {url}");
                return(null);
            }
            LoggerService.Debug($"found binarymeta with ID {binaryMeta.Id}");

            string uri = string.Format("tcm:{0}-{1}", binaryMeta.PublicationId, binaryMeta.Id);

            DD4T.ContentModel.BinaryMeta bm = new ContentModel.BinaryMeta()
            {
                Id        = uri,
                VariantId = binaryMeta.VariantId,
            };
            LoggerService.Debug("about to call ComponentMetaFactory.GetMeta");
            Tridion.ContentDelivery.Meta.IComponentMeta componentMeta = GetTridionComponentMetaFactory(binaryMeta.PublicationId).GetMeta(binaryMeta.Id);
            if (componentMeta == null)
            {
                LoggerService.Debug($"no component metadata found for binary with url {url}");
                bm.HasLastPublishedDate = false;
                return(bm);
            }
            LoggerService.Debug($"found component meta with LastPublishDate {componentMeta.LastPublicationDate}");
            bm.HasLastPublishedDate = true;
            bm.LastPublishedDate    = componentMeta.LastPublicationDate;
            LoggerService.Debug(string.Format("returning binary for url {0} with the following metadata: Id = {1}, VariantId = {2}, HasLastPublishDate = {3}, lastPublishDate = {4}", url, bm.Id, bm.VariantId, bm.HasLastPublishedDate, bm.LastPublishedDate));
            return(bm);
        }
Example #6
0
        public DateTime GetLastPublishedDateByUrl(string url)
        {
            string encodedUrl = HttpUtility.UrlPathEncode(url); // ?? why here? why now?

            Tridion.ContentDelivery.Meta.BinaryMeta binaryMeta = null;
            if (this.PublicationId == 0)
            {
                IList metas = BinaryMetaFactory.GetMetaByUrl(encodedUrl);
                if (metas.Count == 0)
                {
                    return(DateTime.MinValue.AddSeconds(1)); // TODO: use nullable type
                }
                binaryMeta = metas[0] as Tridion.ContentDelivery.Meta.BinaryMeta;
            }
            else
            {
                binaryMeta = BinaryMetaFactory.GetMetaByUrl(this.PublicationId, encodedUrl);
            }

            Tridion.ContentDelivery.Meta.IComponentMeta componentMeta = GetTridionComponentMetaFactory(binaryMeta.PublicationId).GetMeta(binaryMeta.Id);
            return(componentMeta == null ? DateTime.MinValue : componentMeta.LastPublicationDate);
        }