1 頁 (共 1 頁)

[推薦外掛] Custom mass PM 1.4.7 (發送大量私人訊息)

發表於 : 2005-06-26 11:21
心靈捕手
  • 前言
  • 外掛( 檔頭) 描述\r
  • 中文化( 轉貼)
  • 安裝, 使用經驗分享\r
  • 外掛下載
前言:

關於發送[ 大量私人訊息] 的外掛,
在[ 竹貓] 已經有 hpo14 大大分享的文章,
SOURCE: http://phpbb-tw.net/phpbb/viewtopic.php?t=29755
其中, 提到兩種版本的外掛 ACP Mass PM 以及 Custom mass PM

依照個人安裝, 使用的經驗:
前者, 安裝相當容易, 但是功能較差;
後者, 安裝比較困難, 但是功能較優.
所以在此特別將安裝 Custom mass PM 外掛的相關資料整理出來, 提供大家參考.

外掛( 檔頭) 描述:

代碼: 選擇全部

############################################################## 
## MOD Title:          Custom mass PM 
## MOD Author:         Niels < ncr@db9.dk > (Niels Chr. R鷣) http://mods.db9.dk
## MOD Description:    #1 Add mass PM functionnality to group members
##                     (or all forums members) for authorized users.
##                     #2 Add the possibility for all users to send ordinary
##                     PM to multiple users (usernames separated by a semi-colon)
## MOD Version:        1.4.7
## MOD Compatibility:  2.0.6 (prior release not tested) 
## 
## Installation Level: Intermediate
## Installation Time:  20 Minutes (1mn by EasyMOD of Nuttzy) 
## Files To Edit:      12
##      privmsg.php 
##      admin/admin_groups.php
##      includes/emailer.php
##      includes/functions_validate.php
##      includes/usercp_avatar.php
##      includes/usercp_register.php
##      templates/subSilver/posting_body.tpl
##      templates/subSilver/privmsgs_body.tpl
##      templates/subSilver/profile_add_body.tpl
##      templates/subSilver/search_username.tpl
##      templates/subSilver/subSilver.cfg
##      templates/subSilver/admin/group_edit_body.tpl
##
## Included Files:     5
##      groupmsgs.php
##      language/lang_english/lang_mass_pm.php
##      language/lang_french/lang_mass_pm.php
##      language/lang_italian/lang_mass_pm.php
##      language/lang_spanish/lang_mass_pm.php
##      language/lang_chinese_traditional_taiwan/lang_mass_pm.php
############################################################## 
補充說明:
這個外掛, 可以讓擁有權限的使用者, 發送[大量私人訊息]給所有會員, 或特定群組; 一般使用者, 若要同時 PM 二人以上, 則只要用" ;", 將會員名稱隔開.

中文化( 轉貼):

( 感謝 hpo14 大大分享!)

代碼: 選擇全部

<?php 
/************************************************************** 
* 
*  MOD Title:   Custom mass PM 
*  MOD Version: 1.4.5 
*  Translation: Traditional Chinese 
*  Rev date:    11/11/2004 
* 
*  Translator:  hpo14 < hpo14@yahoo.com.tw > http://hpo14.myftp.org/index.php 
* 
***************************************************************/ 

// Admin entries 
$lang['group_allow_pm'] = '大量PM 權限'; 
$lang['group_allow_pm_explain'] = '請選擇可對此群組發送 大量 PM 的會員類型.'; 
  
// Profile entries 
$lang['Enable_mass_pm'] = '大量 PM 通知'; 
$lang['Enable_mass_pm_explain'] = '以 email 通知 PM 接收者, 由您所屬的群組發送'; 
$lang['No_mass_pm'] = '拒收 大量PM'; 

// PM box entries 
$lang['Mass_pm'] = '發送 大量PM'; 

// groupmsgs.php entries 
$lang['Send_mass_pm'] = '大量PM - 群組'; 
$lang['Pm_mass_users'] = '%s , 總共 (%d) 會員 '; 
$lang['All_users'] = '全體會員'; 
$lang['To_group'] = '群組'; 
$lang['No_mass_pm_users'] = '%s , (沒有會員可大量PM)'; 
$lang['PM_delivered'] = '您的訊息已送出'; 
$lang['Mass_pm_count'] = '%d 會員同意接收 大量PM, %d 位已接收到 email 通知'; //%d substituted with the number of recipents, 2'nd %d substituded with the number of notifyed by email 
$lang['Mass_pm_not_allowed'] = '您沒有權限發送 大量PM 給任何一個群組'; 

?> 
ps. 請將此語言檔存成 lang_mass_pm.php 後,
置入 language/lang_chinese_traditional_taiwan/ 底下.

安裝, 使用經驗分享:

安裝過程中, 您可能會發生
在 privmsg.php 找不到相同程式碼的問題:
#
#-----[ OPEN ]------------------------------------------------
#
privmsg.php

#
#-----[ FIND ]------------------------------------------------
#
$to_username = $HTTP_POST_VARS['username'];

#
#-----[ REPLACE WITH ]----------------------------------------
#
// Start replacement - Custom mass PM MOD
$to_username_array = explode (";", $HTTP_POST_VARS['username']);
usort ($to_username_array);
foreach ($to_username_array as $name) $to_usernames .= "'".htmlspecialchars(trim($name))."',";
$to_usernames[strlen($to_usernames)-1]=" ";
// End replacement - Custom mass PM MOD
因為該處的程式碼, 在 phpbb 2.0.10 Update 2.0.11 後, 已經有所變更.
#
#-----[ OPEN ]---------------------------------------------
#
privmsg.php

#
#-----[ FIND ]---------------------------------------------
# Line 1135
$to_username = $HTTP_POST_VARS['username'];

#
#-----[ REPLACE WITH ]---------------------------------------------
#
$to_username = phpbb_clean_username($HTTP_POST_VARS['username']);
SOURCE: http://www.phpbb.com/phpBB/viewtopic.php?t=240611

有個方法可以應變, 您可以試試看:
#
#-----[ OPEN ]------------------------------------------------
#
privmsg.php

#
#-----[ FIND ]------------------------------------------------
#
$to_username = phpbb_clean_username($HTTP_POST_VARS['username']);

#
#-----[ REPLACE WITH ]----------------------------------------
#
// Start replacement - Custom mass PM MOD
$to_username_array = explode (";", phpbb_clean_username($HTTP_POST_VARS['username']));
usort ($to_username_array);
foreach ($to_username_array as $name) $to_usernames .= "'".htmlspecialchars(trim($name))."',";
$to_usernames[strlen($to_usernames)-1]=" ";
// End replacement - Custom mass PM MOD
SOURCE: http://mods.db9.dk/viewtopic.php?p=21808#21808

安裝完成後,
個人的使用上, 如上頭的外掛描述:
" 一般使用" 者, 若要同時 PM 二人以上, 則只要用" ;", 將會員名稱隔開.

而在" 特定群組" 的使用方面 ,
您必須先在後台的" 群組管理"-> " 管理選項" 當中去設定權限( 如下圖)
圖檔
ps. 預設: 只有系統管理員有此( 發送[大量私人訊息]給所有會員) 權限.

做完相關設定後, 若要對特定群組發送[ 大量私人訊息],
則只要按下" 私人訊息" 旁邊的" 寄件夾" 圖示, 即可( 如下圖)
圖檔

外掛下載:
http://mods.db9.dk/viewtopic.php?t=274
http://www.phpbbhacks.com/download/879

[修正] 版管、群管不分

發表於 : 2005-09-27 21:39
心靈捕手
  • 原文作者: BlackJK
  • 資料來源: http://phpbb-tw.net/phpbb/viewtopic.php?p=211335#211335
  • 修正方法:
    #
    #-----[ OPEN ]------------------------------------------------
    #

    代碼: 選擇全部

    language/lang_chinese_traditional_taiwan/lang_main.php 
    
    #
    #-----[ FIND ]------------------------------------------------
    #

    代碼: 選擇全部

    $lang['Moderators'] = '版面管理員';
    
    #
    #-----[ AFTER, ADD ]------------------------------------------
    #

    代碼: 選擇全部

    // 群組管理員 
    $lang['GroupModerator'] = '群組組長'; 
    
    #
    #-----[ SAVE & CLOSE ]----------------------------------------
    #

    #
    #-----[ OPEN ]------------------------------------------------
    #

    代碼: 選擇全部

    admin\admin_groups.php
    
    #
    #-----[ FIND ]------------------------------------------------
    #

    代碼: 選擇全部

    ucfirst(strtolower($lang['Forum_MOD'])),
    
    #
    #-----[ REPLACE WITH ]----------------------------------------
    #

    代碼: 選擇全部

    ucfirst(strtolower($lang['GroupModerator'])),
    
    #
    #-----[ SAVE & CLOSE ]----------------------------------------
    #
    #END

[教學] 因應升級 phpbb 2.0.18 後, 找不到 privmsg.php 相關程式碼的

發表於 : 2005-11-05 08:23
心靈捕手
以下是外掛 Custom mass PM 1.4.7 關於 privmsg.php 相關語法部分擷取

代碼: 選擇全部

# 
#-----[ FIND ]------------------------------------------------ 
# 
			if ( !($result = $db->sql_query($sql)) )
			{
				$error = TRUE;
				$error_msg = $lang['No_such_user'];
			}

			$to_userdata = $db->sql_fetchrow($result);
		}
		else
		{

# 
#-----[ REPLACE WITH ]---------------------------------------- 
#

// Start replacement - Custom mass PM MOD
	if( !($result2 = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain users PM information', '', __LINE__, __FILE__, $sql);
	}
	$to_users = $db->sql_fetchrowset($result2);
	$n=0;
	while ($to_username_array[$n] && !$error)
	{
		if (strcasecmp($to_users[$n]['username'], str_replace("\'", "'",$to_username_array[$n]))) 
		{ 
			$error = TRUE; 
			$error_msg .= $lang['No_such_user']." '".str_replace("\'", "'", $to_username_array[$n]);
		}
		$n++;
	}
}
else
{
// End replacement - Custom mass PM MOD
而當您 2.0.17 升級 2.0.18 過程中, 關於 privmsg.php 相關語法部分擷取

代碼: 選擇全部

#
#-----[ FIND ]---------------------------------------------
#
			$to_userdata = $db->sql_fetchrow($result);

#
#-----[ REPLACE WITH ]---------------------------------------------
#
			if (!($to_userdata = $db->sql_fetchrow($result)))
			{
				$error = TRUE;
				$error_msg = $lang['No_such_user'];
			}
也就是說, 假如有人是使用 2.0.18 版, 要安裝外掛 Custom mass PM 1.4.7
那麼他可能會找不到

代碼: 選擇全部

$to_userdata = $db->sql_fetchrow($result);
而原本要取代的地方, 則是要變成這樣:

代碼: 選擇全部

# 
#-----[ FIND ]------------------------------------------------ 
# 
			if ( !($result = $db->sql_query($sql)) )
			{
				$error = TRUE;
				$error_msg = $lang['No_such_user'];
			}

			if (!($to_userdata = $db->sql_fetchrow($result)))
			{
				$error = TRUE;
				$error_msg = $lang['No_such_user'];
			}
		}
		else
		{

# 
#-----[ REPLACE WITH ]---------------------------------------- 
#

// Start replacement - Custom mass PM MOD
	if( !($result2 = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain users PM information', '', __LINE__, __FILE__, $sql);
	}
	$to_users = $db->sql_fetchrowset($result2);
	$n=0;
	while ($to_username_array[$n] && !$error)
	{
		if (strcasecmp($to_users[$n]['username'], str_replace("\'", "'",$to_username_array[$n]))) 
		{ 
			$error = TRUE; 
			$error_msg .= $lang['No_such_user']." '".str_replace("\'", "'", $to_username_array[$n]);
		}
		$n++;
	}
}
else
{
// End replacement - Custom mass PM MOD

[補充說明] 常見 '錯誤訊息' 狀況與解決

發表於 : 2006-06-27 10:05
心靈捕手