SSブログ
-| 2007年05月 |2007年06月 ブログトップ
- | 次の10件

VBプログラマのSharePoint開発-(2)- ユーザー追加 [技術情報]

SPS2003で検索を実施するためには各サイトをクロールする必要性があります。
この際にクロールするユーザーアカウントがクロール対象サイトにアクセス権を持っている必要性があります。
しかし、クロールアカウントが入っていないサイトを見つけてアクセス権を登録するのは至難の業です。
そこで今回は特定アカウントを全サイトに登録するコンソールプログラムを作りました。
下記のサンプルはその一部です。パラメータにサイトURLを渡してそのサイト配下の全サブサイトに対して指定のアカウントが存在しなければ追加します。

--------------------------------------------------------------------------
Public Function AdminUserAdd(ByVal SiteUrl As String) As Boolean
Dim GlobalAdmin As New Administration.SPGlobalAdmin
Dim MySPUser As SPUser
Dim MySPWeb As SPWeb
Dim MySPRole As SPRole
Dim tmpLogin As String
Dim admLogin As String = [追加したいユーザーアカウント]
Dim addFlg As Boolean

Try
Dim MyUri As Uri = New Uri(SiteUrl)
Dim MyVirtualServer As Administration.SPVirtualServer = GlobalAdmin.OpenVirtualServer(MyUri)
Dim MySPSite As SPSite = MyVirtualServer.Sites(MyUri.AbsolutePath)

'サイトコレクション内の全サブサイトを調べる
For Each MySPWeb In MySPSite.AllWebs
        '追加フラグ
addFlg = False
Try
'サブサイト内の全ロールを調べる
For Each MySPRole In MySPWeb.Roles
'ロールが管理者か?
If MySPRole.Type = SPRoleType.Administrator Then
'全管理者ユーザーを調べる
For Each MySPUser In MySPRole.Users
'追加したいアカウントが存在するかチェックする。
If MySPUser.LoginName.ToLower = admLogin.ToLower Then
addFlg = True
End If
Next
End If
Next
Catch ex As Exception
System.Console.WriteLine("*** Web Language Not Supported ** " & ex.Message)
System.Console.WriteLine("Site Url = " & MySPWeb.Url)
End Try
'追加したいアカウントが存在しなかった場合、アカウントを追加する。
If addFlg = False Then
MySPRole.AddUser(sUser, sEmail, sShowName, sNotes)
End If
Next
Catch ex As Exception
System.Console.WriteLine(ex.Message)
End Try
End Function


VBプログラマのSharePoint開発-(1)- 通知設定 [技術情報]

SPS2003ではリストにアイテムが追加されたときにメールで知らせる通知設定がありますが、この設定は自分で行うことが原則になっているようです。
しかし、開発を請け負った場合、通知設定まで行って引き渡す必要性が出てきます。
こんな時のために通知設定と解除行うSAMPLEプログラムを記載します。

SAMPLE
---------------------------------
事前に設定しておく変数
sSiteUrl = [表示したいサイトURL]
LoginName = [通知を追加したいユーザー]
ListName = [通知したいリスト名]
Flg = [登録したい場合:True、削除したい場合:False]
---------------------------------
Dim GlobalAdmin As New Microsoft.SharePoint.Administration.SPGlobalAdmin
Dim MyVirtualServer As Microsoft.SharePoint.Administration.SPVirtualServer
Dim MySPSite As Microsoft.SharePoint.SPSite
Dim MySPWeb As Microsoft.SharePoint.SPWeb
Dim MyUser As Microsoft.SharePoint.SPUser
Dim MyList As Microsoft.SharePoint.SPList
Dim k As Integer
Dim MyUri As New Uri(sSiteUrl)
MyVirtualServer = GlobalAdmin.OpenVirtualServer(MyUri)
MySPSite = MyVirtualServer.Sites(sSiteUrl.Replace("http://" & MyVirtualServer.HostName, ""))
MySPWeb = MySPSite.AllWebs(sSiteUrl.Replace("http://" & MyVirtualServer.HostName, ""))
'ユーザー取得
MyUser = MySPWeb.Users(LoginName)
'通知対象リスト取得
MyList = MySPWeb.Lists(ListName)
If Flg = True Then
'登録設定
MyUser.Alerts.Add(MyList, Microsoft.SharePoint.SPEventType.All, _ Microsoft.SharePoint.SPAlertFrequency.Immediate)
Else
'削除設定
For k = 0 To MyUser.Alerts.Count - 1
If MyList.Title = MyUser.Alerts(k).List.Title Then
MyUser.Alerts.Delete(k)
Exit For
End If
Next
End If


サブサイトをトップレベルサイトに移行する [技術情報]

WSS2.0でサブサイト→トップレベルサイトへの移行に成功しました。備忘録として手順を残しておきます。

【サブサイト編集】
 1.SMIGRATE.EXEを使用してサイトをバックアップする。
 2.バックアップファイルの拡張子を.fwp→.cabに変更。
 3.書庫ファイルからmanifest.xmlを取り出す。
 4.FrontPageなどでURLを移行したいトップレベルサイトのURLに置換する。
 5.再圧縮し、拡張子を.cab→.fwpに戻す。

【トップレベルサイトの作成】
 1.コンテンツDBを作成する。
 2.トップレベルサイトを作成する。ただし、このときにテンプレートは指定しない。
 3.URL指定でトップレベルサイトの「ユーザーの管理」を表示し、移行元サブサイトのユーザーを追加する。

【サイト移行】
 1.SMIGRATE.EXEを使用してサイトをトップレベルサイトにリストアする。


- | 次の10件
-|2007年05月 |2007年06月 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。