private int GetRelationshipNameId() { var relationshipName = UseAdHocRelationshipName ? RelationshipNameInfoProvider.GetAdHocRelationshipNameCodeName(TreeNode.ClassName, FieldInfo) : RelationshipName; var relationshipNameInfo = RelationshipNameInfoProvider.GetRelationshipNameInfo(relationshipName); if (relationshipNameInfo == null) { throw new NullReferenceException("Missing relationship name to use for relation."); } return(relationshipNameInfo.RelationshipNameId); }
/// <summary> /// Get related pages for a Pages field specified on a component. /// </summary> /// <param name="component">The component that has the Pages field.</param> /// <param name="fieldName">The code name of the Pages field on the component.</param> /// <returns>The related pages for the specified component field.</returns> public static IEnumerable <TreeNode> GetRelatedDocumentsForComponent(this IContentComponent component, string fieldName) { TreeNode parent = component.Parent; if (parent == null) { return(Enumerable.Empty <TreeNode>()); } FormInfo form = FormHelper.GetFormInfo(component.NodeClassName, false); FormFieldInfo formField = form.GetFormField(fieldName); if (formField == null) { return(Enumerable.Empty <TreeNode>()); } string relationshipNameCodeName = RelationshipNameInfoProvider.GetAdHocRelationshipNameCodeName(parent.NodeClassName, formField); RelationshipNameInfo relationshipNameInfo = RelationshipNameInfoProvider.GetRelationshipNameInfo(relationshipNameCodeName); var relationshipQuery = DocumentHelper.GetDocuments() .Culture(parent.DocumentCulture) .CombineWithDefaultCulture(parent.TreeProvider.GetCombineWithDefaultCulture(parent.Site.SiteName)) .Published(!parent.IsLastVersion) .PublishedVersion(!parent.IsLastVersion) .WithCoupledColumns() .InRelationWith( parent.NodeGUID, relationshipNameCodeName, RelationshipSideEnum.Left ); return(RelationshipInfoProvider.ApplyRelationshipOrderData( relationshipQuery, parent.NodeID, relationshipNameInfo.RelationshipNameId )); }
private IList <Guid> GetRelatedNodeGuids(TreeNode node, FormFieldInfo relationshipsField) { var relationshipName = RelationshipNameInfoProvider.GetAdHocRelationshipNameCodeName(node.ClassName, relationshipsField); var relationshipNameInfo = RelationshipNameInfo.Provider.Get(relationshipName); if (relationshipNameInfo == null) { return(new List <Guid>()); } var guids = RelationshipInfo.Provider.Get() .Columns("NodeGUID") .Source( s => s.LeftJoin(new QuerySourceTable("CMS_Tree"), "RightNodeID", "NodeID") ) .WhereEquals("LeftNodeID", node.NodeID) .WhereEquals("RelationshipID", relationshipNameInfo.RelationshipNameId) .OrderBy("RelationshipOrder") .GetListResult <Guid>(); return(guids); }