您在這裡

時間到自動移除角色的模組?

tky's 的頭像
tky 在 2009-08-24 (週一) 18:13 發表

各位好:
最近再找能夠以時間排程來達到管理會員角色的模組。
主要的目的是,讓收費會員在一段時間後(比方說繳費一年之後),自動移除掉所屬的角色(比方說「白金會員」)。這樣管理員就不用手動去做查核的工作。
比較像是schedule + role的組合。

希望大家給點意見。謝謝

TKY

感謝Charles和花水妹!

Role expire已經符合TKY的需求了,不過希望能夠有「角色過期之後,自動發信給管理者和使用者」的功能。
不曉得rule能否作到這一點?(或者Role expire + rule的搭配?)

tky

tky

多謝花水妹。

TKY試了一下,果然是花水妹所想像的設定:
Event: 使用者資料更新時
Condition: 使用者具有某個角色(不過要設定成negate,也就是當使用者資料更新時卻不具有這樣的角色時,觸發以下的action)
Action:發信給acting user

這樣就能讓原來已經具有角色但後來被取消角色者自動收到信件。

如果要順便發信給管理者、通知特定使用者角色到期的話,就再加一個action,「發出一封任意郵件」,將收件者設定為管理員即可。

有人能夠稍微解釋一下action中的updated user、acting user以及unchanged user三者的差別嗎?

tky

tky

Action:發信給acting user

這部份我認為(沒有測試過)應該是要發信給「updated user」(資料被更新的那個人)。
所謂的acting user應該指的是「更新使用者資料的人」,比如說若有使用者有權限更動別人的role,這個人就是acting user,而被更動的使用者是updated user....
而unchanged user...可能是說沒改到的使用者??

真是有點複雜,我也不大確定,不知有沒有人試過?

糟糕,出大包。
tky使用rules的目的,是想要在當使用者被role expire模組取消掉「繳費會員」之後,自動發通知信給使用者與管理者。
tky當初設定rule的方式是:

Event:使用者資料更新時
Condition:如果使用者沒有「繳費會員」的角色
Action:發信通知

結果發現,一跑cron,所有沒有「繳費會員」角色都收到通知信。因為在使用者那邊設定成"acting user"....
真是白目到不行。

接下來就設定成:

Event:使用者資料更新時
Condition:如果updated user沒有「繳費會員」的角色
Action:發信通知updated user

這樣還好,因為只有updated user會收到信;不過仍然不理想,因為只要使用者更新自己的資料而他本來就不是繳費會員,他就會一直收到信...
所以就設定成這樣看看:

Event:使用者資料更新時
Condition:

  1. compare two users: updated user and unchanged user
  2. 如果updated user沒有「繳費會員」的角色

Action:發信通知updated user

結果還是不行;因為沒法設定出一個條件可以符合「使用者之前是繳費會員、但是後來不是了」的情況。
非繳費會員使用者只要一更新自己的資料,就會符合上述的條件而不停收到信....

真是一整個的頭疼啊!

tky

tky

是否能設定成如下:

Event:使用者資料更新時
Condition:

1. compare two users: updated user and unchanged user
2. 如果updated user沒有「繳費會員」的角色
3. 如果unchanged user有「繳費會員」的角色

Action:發信通知updated user

多謝hanamizuki的提示,但,唉~~還是不行。

似乎unchanged user的定義並非「修改之前的使用者」,而是「沒有做出變更的使用者」。似乎在大量修改使用者帳號的場合才會派上用場。
所以設定『如果unchanged user有「繳費會員」的角色』這樣的條件是沒有用的,因為只要你有修改過使用者帳號,這個帳號就變成了updated user而永遠不會是unchanged user。這個條件怎麼都不會被滿足,信也就發不出去了。

現下好像只能等Role expire的作者按照issue所提的計畫,把這樣的功能加進下一個版本的模組了。

tky

tky