改變會員控制台的選項之預設值

與 phpBB 3.0.x 相關主題。
回覆文章
頭像
心靈捕手
默默耕耘的老師
默默耕耘的老師
文章: 8621
註冊時間: 2004-04-30 01:54
來自: Taiwan

改變會員控制台的選項之預設值

文章 心靈捕手 » 2012-02-01 11:52

序言

會員可以在他們的「會員控制台」設定各種選項。
每個選項對於新的會員都有一個預設值,而對於已經存在的會員都有一個可以選擇的值,這個值可以是或不是該預設值。
這篇文章告訴您如何改變關於新的會員之預設值,以及改變關於已經存在的會員所選擇之值。
注意!會員仍然可以自由地改變預設值,或者改回他們已經選擇的值。
這篇文章「不」包含教您如何永久地強迫改變會員之前所選擇的值。

在 phpBB 有兩種控制方式(假如權限許可的話)可以讓會員在「會員控制台」設定會員選項。

有些選項在會員資料表中它們自己有專用的欄位。
其他選項是在會員資料表中會員選項欄位的總和之結果。

用來改變每個類型的方式是不同的,如下所述。

您需要知道如何開始做
  1. 每當您要執行資料庫查詢、更新前,第一件要做的事是受影響的資料表之備份。
    在這篇文章中,所有的查詢都是在使用者資料表上運行,所以這是第一個要備份的。
  2. 當編輯 phpBB 檔案時,總是用一個「好」的純文本編輯器,可以將檔案儲存為 UTF-8(未含 BOM)格式。這裡是「好」的純文本編輯器列表。
  3. 底下的查詢假設您的資料表字首是「phpbb_」。如果不是,那麼您必須改變例子中的查詢為您所設定的資料表字首。
    資料表字首可以在 phpMyAdmin 裡頭,或者是在您的 config.php 檔案中 $table_prefix 的值被看到。
  4. 如果您不懂如何運行資料庫查詢,那麼請看在知識庫的「Executing SQL Queries in phpMyAdmin」。
  5. 例子中的「WHERE user_type <> 2」情況,是指查詢的操作不包含機器人以及匿名者。
改變各自欄位的選項

會員可以設定的某些選項(它們都定義在 includes/functions_user.php),在資料庫的使用者資料表中,都有各自的欄位以設定其值。
它們是:

代碼: 選擇全部

    'user_notify'        => 0,
      'user_notify_pm'     => 1,
      'user_notify_type'      => NOTIFY_EMAIL,
      'user_allow_pm'         => 1,
      'user_allow_viewonline' => 1,
      'user_allow_viewemail'  => 1,
      'user_allow_massemail'  => 1,
「0」表示該選項關閉,而「1」表示該選項開啟。
要改變新會員的預設值,您只要編輯 includes/functions_user.php 檔案,將 0 改為 1,或反之亦然。
若要改變已經存在的會員們之選項,那麼您得要運行像這樣的查詢:

代碼: 選擇全部

UPDATE phpbb_users SET user_notify = 1 WHERE user_type <> 2;
無論如何,檔案中「user_notify_type」選項有三種可能的值,它們都對應了在資料庫欄位中的數值。
如果您要改變新會員的「user_notify_type」選項,那麼您得編輯 includes/functions_user.php 檔案,
隨意將它改為「NOTIFY_EMAIL」(值 0),或改為「NOTIFY_IM」(值 1),或改為「NOTIFY_BOTH」 (值 2)。

若要改變已經存在的會員們之「user_notify_type」選項,那麼您得要運行像這樣的查詢:

代碼: 選擇全部

UPDATE phpbb_users SET user_notify_type = 1 WHERE user_type <> 2;
最後的查詢將改變預設的「NOTIFY_EMAIL」(值 0)而成為「NOTIFY_IM」(值 1)。

改變儲存在「user_options」欄位的值之選項

會員可以設定的某些選項(它們都定義在 includes/functions_convert.php)是 2 的次方值之總和,
而它們被儲存在「user_options」資料表中當作是一個單一的整數。它們是:

代碼: 選擇全部

'viewimg'      => array('bit' => 0, 'default' => 1),
      'viewflash'    => array('bit' => 1, 'default' => 1),
      'viewsmilies'  => array('bit' => 2, 'default' => 1),
      'viewsigs'     => array('bit' => 3, 'default' => 1),
      'viewavatars'  => array('bit' => 4, 'default' => 1),
      'viewcensors'  => array('bit' => 5, 'default' => 1),
      'attachsig'    => array('bit' => 6, 'default' => 0),
      'bbcode'    => array('bit' => 8, 'default' => 1),
      'smilies'      => array('bit' => 9, 'default' => 1),
      'popuppm'      => array('bit' => 10, 'default' => 0),
      'sig_bbcode'   => array('bit' => 15, 'default' => 1),
      'sig_smilies'  => array('bit' => 16, 'default' => 1),
      'sig_links'    => array('bit' => 17, 'default' => 1),
這些預設產生各種次方的總值為 230271,它記載在 includes/functions_user,這裡是:

代碼: 選擇全部

'user_options'    => 230271,
要改變新會員的預設值,您只要編輯 includes/functions_user.php 檔案,將預設值改為 1 或 0,同時也適當地修改 230271 的值。

例如,如果您想要將「view_sigs」預設值改為關閉(0),以及將「attach_sig」預設值改為開啟(1),
那麼您將減去 8(2 的 3 次方),因為「viewsigs」選項的位值是 3,而增加 64(2 的 6 次方),因為「attachsig」選項的位值是 6。
因此,您將編輯 includes/functions_user.php 檔案,將 230271 修改成 230327。

若要改變已經存在的會員們之選項值,由 0 到 1,則您必須使用「OR」或「|」在資料庫的「user_options」欄位運行查詢。
也就是說,需要計算權力分配給每個選項的位值(2 的幾次方)。
對「sig_off」而言,那個值是 64,因為它的位值是 6,而 2 的 6 次方是 64。

例如,如果每個會員的總值「並非都是」設定為開啟,那麼底下的運行,將改變「attach_sig」由「關閉」到「開啟」:

代碼: 選擇全部

UPDATE phpbb_users set user_options = user_options | 64 WHERE user_type <> 2;
若要改變已經存在的會員們之選項值,由 1 到 0,則您必須使用「XOR」或「^」在資料庫的「user_options」欄位運行查詢。
這將減去適當的值,如果它「已經都是」包含在每個會員「user_options」的總值。

例如,底下的運行,將改變「view_sigs」由「開啟」到「關閉」:

代碼: 選擇全部

UPDATE phpbb_users set user_options = user_options ^ 8 WHERE user_type <> 2;
改變特別的群組或會員之選項

請注意,您也可以為特別的群組或會員改變選項。然而,你只能為已經存在的會員做改變,不能為未來的會員(沒有相關的這類外掛)。

例如,這個查詢將改變目前在「新註冊會員」群組的人之「user_allow_pm」選項,從開啟到關閉。
這是假設「新註冊會員」群組的「group_id」是 7(預設),
而是否運作則得看「新註冊會員」群組是否為該會員之預設會員群組:

代碼: 選擇全部

UPDATE phpbb_users SET user_allow_pm = 0 WHERE user_id IN(SELECT user_id FROM phpbb_user_group WHERE group_id = 7);
這個查詢會改變已經存在的沒有簽名之會員的「viewflash」選項,從開啟到關閉:

代碼: 選擇全部

UPDATE phpbb_users set user_options = user_options ^ 2 WHERE user_sig = '';
--
資料來源:
http://www.phpbb.com/kb/article/changin ... nd-values/
施比受有福,歡迎來信賜教,謝謝 & 再見!
祝福您 好運 ^_^
歡迎加入★★心靈捕手★★ :: 討論區!!
http://wang5555.hopto.org/phpBB3/
p.s. 奉老婆之命:在晚上十一點前,得關機睡覺!!!

回覆文章

回到「3.0」