Esempio n. 1
0
        /// <summary>
        /// Gets the meta field values.
        /// </summary>
        /// <param name="row">The row.</param>
        /// <param name="metaAttributes">The meta attributes.</param>
        /// <returns></returns>
        private static Hashtable GetMetaFieldValues(DataRow row, MetaClass metaClass, ref ItemAttributes metaAttributes)
        {
            Hashtable hash = null;

            // try loading from serialized binary field first
            if (row.Table.Columns.Contains(MetaObjectSerialized.SerializedFieldName) && row[MetaObjectSerialized.SerializedFieldName] != DBNull.Value)
            {
                IFormatter formatter = null;
                try
                {
                    formatter = new BinaryFormatter();
                    MetaObjectSerialized metaObjSerialized = (MetaObjectSerialized)formatter.Deserialize(new MemoryStream((byte[])row[MetaObjectSerialized.SerializedFieldName]));
                    if (metaObjSerialized != null)
                    {
                        if (metaAttributes != null)
                        {
                            metaAttributes.CreatedBy    = metaObjSerialized.CreatorId;
                            metaAttributes.CreatedDate  = metaObjSerialized.Created;
                            metaAttributes.ModifiedBy   = metaObjSerialized.ModifierId;
                            metaAttributes.ModifiedDate = metaObjSerialized.Modified;
                        }
                        hash = metaObjSerialized.GetValues(CatalogContext.MetaDataContext.Language);
                    }
                }
                finally
                {
                    formatter = null;
                }
            }

            // Load from database
            if (hash == null)
            {
                MetaObject metaObj = MetaObject.Load(CatalogContext.MetaDataContext, (int)row[0], metaClass);
                if (metaObj != null)
                {
                    metaAttributes.CreatedBy    = metaObj.CreatorId;
                    metaAttributes.CreatedDate  = metaObj.Created;
                    metaAttributes.ModifiedBy   = metaObj.ModifierId;
                    metaAttributes.ModifiedDate = metaObj.Modified;
                    hash = metaObj.GetValues();
                }
            }

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

            return(hash);
        }
 private static bool FieldExists(this MetaObject item, string fieldName)
 {
     return(item.GetValues().Keys.Cast <string>().Contains(fieldName));
 }