2010-05-03 22:08:42Jonah

將Xoops的PM模組,將帳號名單改成真實姓名的清單

由於目前的PM模組(Xoops 2.4.2)
如果要傳訊給其他人,要記住其他人的帳號而沒有看到真實姓名還蠻困難的
感謝神讓我想到修改PM模組的方法
將PM模組改為可以顯示真實姓名的模組
提供修改步驟給大家,希望可以對XOOPS的站長們帶來幫助

步驟如下
1.修改Kernel目錄下的member.php
    在XoopsMemberHandler這個class之下增加一個Function

    function getUserRealNameList($criteria = null)
    {
        $users = $this->_uHandler->getObjects($criteria, true);
        $ret = array();
        foreach (array_keys($users) as $i) {
            $ret[$i] = $users[$i]->getVar('name');
        }
        return $ret;
    }

2.在class\xoopsforms的目錄下,複製formselectuser.php為formselectusername.php  
   把第34行改成
class XoopsFormSelectUserName extends XoopsFormElementTray

   把第47行改成
function XoopsFormSelectUserName($caption, $name, $include_anon = false, $value = null, $size = 1, $multiple = false)

   把第65行改成
$users = $member_handler->getUserRealNameList($criteria);

3.修改modules\pm\pmlite.php
   把第94行改成
    $pm_uname = XoopsUser::getUnameFromId($pm->getVar("from_userid"),1);

   把第117行改成
$GLOBALS['xoopsTpl']->assign('to_username', XoopsUser::getUnameFromId($_POST["to_userid"],1));

   把第123行改成
 $GLOBALS['xoopsTpl']->assign('to_username', XoopsUser::getUnameFromId($to_userid, 1));

   把第125行與第126行
            $to_username = new XoopsFormSelectUser('', 'to_userid');
            $GLOBALS['xoopsTpl']->assign('to_username', $to_username->render());
改成以下兩行文字
require_once $GLOBALS['xoops']->path('class/xoopsform/formselectusername.php');
$to_username = new XoopsFormSelectUserName('', 'to_userid');

4.然後進入管理區更新模組,就大功告成了


相關檔案下載http://www.ballsum.com.tw/pm_hack_www.zip

本修改的方法,歡迎共享
作者:林哲安(jonah@hopechurch.org.tw)
jim 2011-11-10 10:41:40

大大這篇寫得很好,剛好小弟需要,感謝您唷^^

jim 2011-11-10 10:40:52

3.修改modules\pm\pmlite.php
把第125行與第126行
$to_username = new XoopsFormSelectUser('', 'to_userid');
$GLOBALS['xoopsTpl']->assign('to_username', $to_username->render());
改成以下三行文字
require_once $GLOBALS['xoops']->path('class/xoopsform/formselectusername.php');
$to_username = new XoopsFormSelectUserName('', 'to_userid');
$GLOBALS['xoopsTpl']->assign('to_username', $to_username->render());


這樣應該可以用

失敗者 2010-09-22 01:40:39

有的版本跟你一樣~
無論下載檔案,還是用key都不能使用~
收件人 那一欗 空白未帶入使用者