Orchard客製化:統計最多使用者的電子郵件信箱

附加檔案的程式碼可以讀取儲存網站會員資料的資料表以獲得的會員的電子郵件,並且依據電子郵件地址分類,找出被最多會員註冊和使用的電子郵件地址的網域

附加檔案的程式碼可以讀取儲存網站會員資料的資料表以獲得的會員的電子郵件,並且依據電子郵件地址分類,找出被最多會員註冊和使用的電子郵件地址的網域。

由於必須使用IOrchardServices,所以必須匯入命名空間Orchard。
另外,因為必須使用IUser,所以必須匯入命名空間Orchard.Security。
最後,在查詢會員資料的資料表時,因為必須使用UserPart與UserPartRecord,所以必須匯入Orchard.Users.Models。

using Orchard;
using Orchard.Security;
using Orchard.Users.Models;
using Orchard.ContentManagement;

至於在HomeController的建構函式定義傳入型別為IOrchardServices的參數orchardServices的技術稱之為Inversion of Control,IoC。

相較於傳統的程序導向的程式設計的觀點採用中央控管的原理,由主程式呼叫各個副程式以實現副程式的重複使用,IoC揚棄中央控管的原理,也就是放棄由呼叫端的程式碼決定程式碼的執行順序,以及被呼叫的程式碼負責封裝商業邏輯。

相反的,IoC運用可以重複使用的泛型程式碼控制特定問題領域相關的程式碼的執行,所以Orchard提供IoC,至於程式設計師所撰寫的模組則是特定問題領域的程式碼。

IoC的優點如下:

一、減少執行特定作業衍生的耦合力。
二、每一個模組可以專注在特定的問題領域。
三、每一個模組不必考慮其他的模組的實際作業項目或者應該具備哪一些作業項目。
四、當一個模組被替換時,不必擔心會影響到其他模組。

參考資料:
http://en.wikipedia.org/wiki/Inversion_of_control
 

public class HomeController : Controller {
       
    private IOrchardServices _orchardServices;
       
    public HomeController(IOrchardServices orchardServices) {
           
        _orchardServices = orchardServices;
    }
       

下方的程式碼運用泛型的技術讀取資料表的內容,UserPartRecord是會員資料表的綱要,用以產生儲存會員資料的資料表,資料表的每一筆資料都則是透過UserPart供Orchard存取。

_orchardServices.ContentManager.Query<UserPart, UserPartRecord>().Where(u => u.Email.Contains("@")).List()
  

當資料表中的Email欄位無符合條件的資料時,執行結果將會出現No Qualified Data。

   


當資料表中的Email欄位有符合條件的資料時,執行結果將會出現統計與篩選的結果。

                                          


附加檔案:

1.已封裝的套件
Orchard.Module.Poemist.Analysis.1.0.zip

2.原始檔
Poemist.Analysis.zip