簡體   English   中英

CAML查詢僅從SharePoint 2007檢索已發布的頁面?

[英]CAML query to retrieve only published pages from SharePoint 2007?

我目前正在檢索所有頁面並過濾掉未在代碼中發布的頁面,檢查DateTime.Now是否小於此:

static readonly DateTime IMMEDIATE_PUBLISH = new DateTime(1900, 1, 1);

public static DateTime PublicationDate(this SPListItem item)
{
    // get start publish date
    PublishingPage page = item.Publishing();
    if (page != null)
    {
        bool isPublished = (page.ListItem.File != null)
            ? (page.ListItem.File.Level == SPFileLevel.Published)
            : true;
        bool isApproved = (page.ListItem.ModerationInformation != null)
            ? (page.ListItem.ModerationInformation.Status == SPModerationStatusType.Approved)
            : true;
        if (isPublished && isApproved && (DateTime.Now < page.EndDate))
        {
            return page.StartDate == IMMEDIATE_PUBLISH ? page.CreatedDate : page.StartDate;
        }
        return DateTime.MaxValue;
    }
    // not a scheduled item. treat as published
    return DateTime.MinValue;
}

什么是等效的CAML查詢,以便我不從數據庫中提取不必要的項目?

以下是用於檢查文檔發布的CAML查詢的示例。 我知道這是一個相當古老的問題,但希望這可能對下一個谷歌如何做到這一點的人有用:

<Query>
    <Where>
        <And>
            <Or>
                <Leq>
                    <FieldRef Name='PublishingStartDate'/>
                    <Value Type='DateTime' IncludeTimeValue='TRUE'>
                        <Today/>
                    </Value>
                </Leq>
                <IsNull>
                    <FieldRef Name='PublishingStartDate'/>
                </IsNull>
            </Or>
            <Or>
                <Geq>
                    <FieldRef Name='PublishingExpirationDate'/>
                    <Value Type='DateTime' IncludeTimeValue='TRUE'>
                        <Today/>
                    </Value>
                </Geq>
                <IsNull>
                    <FieldRef Name='PublishingExpirationDate'/>
                </IsNull>
            </Or>
        </And>
    </Where>
</Query>

在我的觀點中,你的檢查方式太多了。

您應該只檢查“PublishingStartDate”<=今天和“PublishingExpirationDate”>今天

對於普通用戶,您將找不到未發布/批准的頁面。
對於有權查找這些頁面的用戶,您可能不希望僅僅因為當前版本未發布/批准而將其排除。 如果您只想要發布至少一個版本的頁面,則可以添加“_UIVersion”> = 512的檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM