喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [原创] Mambo/Joomla!下实现多系统桥接的方法  
 
hoping
新手上路
Rank: 1
初级会员



UID 63716
精华 0
积分 8
帖子 10
金钱 8 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-3-25
状态 离线
Mambo/Joomla!下实现多系统桥接的方法

  设计思路:利用原Joomla/Mambo的“触发器”原理,在对用户表进行相应操作时均做一触发器事件,其中包括:
    1.注册
    2.登录
    3.注销
    4.更新
    5.删除
    6.检查重名
    7.获取最小可用的用户ID值
  下面开始详述上述功能的实现方法(注:此方法同样适用于Mambo)。为避免叙述重复,请在下文中所列的函数名的global里包含一条$_MAMBOTS,即global (...),$_MAMBOTS;,其中,(...)代表的是原语句。
  一、登录:
  文件名:joomla.php/mambo.php
  类名:mosMainFrame
  函数名:function login(......
  原文语句:
    if ($row->block == 1) {
     mosErrorAlert(_LOGIN_BLOCKED);
    }
  此段内容下添加:
    $_MAMBOTS->loadBotGroup( 'user' );
    $results = $_MAMBOTS->trigger( 'onLogin', array( &$row ), true );
    if(is_array($results))
    foreach($results as $v){
     if($v!=1)
     mosErrorAlert(_LOGIN_INCORRECT);
    }
  这里$results为一数组,每元素中的值为被桥接系统中关于该用户信息是否匹配的状态。如果有任意一个系统不能与需要登录的信息匹配,则登录失败!
  二、注销:
  文件名:joomla.php/mambo.php
  类名:mosMainFrame
  函数名:function logout()
  原文语句:
  mosCache::cleanCache();
  在此行上一行添加:
  $_MAMBOTS->loadBotGroup( 'user' );
  $results = $_MAMBOTS->trigger( 'onLogout', array( &$row, &$params ), true );
  这里将会直接按照当前用户的用户名在被桥接系统中依次进行注销。无需返回值。
  三、注册:
  文件名:joomla.php/mambo.php
  类名:mosUser
  函数名:function store(...
  原文语句:
   } else {
    // new record
  在此段内容下添加:
   $_MAMBOTS->loadBotGroup( 'user' );
   $result = $_MAMBOTS->trigger( 'onGetID');
   $maxid=0;
   foreach($result as $v){
    if ($v > $maxid) $maxid=$v;
   }
   $maxid=$maxid+1;
   $kname=$this->_tbl_key;
   $this->$kname=$maxid;
   $_MAMBOTS->loadBotGroup( 'user' );
   $results = $_MAMBOTS->trigger( 'onRegister', array( &$this ), true );  
   foreach($results as $v){
    if(!$v) {
     $_MAMBOTS->trigger( 'onRegister', array( $maxid ), true );
     return false;
    }
   }
   if(!$results) return false;
  这里的$results为一数组,分别保存的是被桥接系统对用户注册信息的保存情况。如果有任意一个系统保存失败,则注册失败!
  四、检查重名(重复email)以及由系统设置的其它限制项目:
  文件名:joomla.php/mambo.php
  类名:mosUser
  函数名:function check()
  原文语句:
   return true;
  在此句上一行添加以下内容:
   $_MAMBOTS->loadBotGroup( 'user' );
   $results = $_MAMBOTS->trigger( 'onCheck', array( &$this ), true );
   foreach($results as $v){
    if(!$v) return false;
   }
   if(!$results) return false;
  这里的$this是当前需要检查的用户相关信息,如用户名、密码、邮件等。同样,如果有任意一个系统检查出错(重名/重邮件),则不能继续注册。
  五、更新资料
  文件名:joomla.php/mambo.php
  类名:mosUser
  函数名:function store(...
  原文语句:
   $ret = $this->_db->updateObject( $this->_tbl, $this, $this->_tbl_key, $updateNulls );
  在此句下一行添加以下内容:
   $_MAMBOTS->loadBotGroup( 'user' );
   $_MAMBOTS->trigger( 'onUpdate', array( &$this ), true );
  更新时不对返回结果进行检测。
  六、删除用户
  文件名:joomla.php/mambo.php
  类名:mosUser
  函数名:function delete(...
  原文语句:
   return true;
  在此句上一行添加:
   $_MAMBOTS->loadBotGroup( 'user' );
   $_MAMBOTS->trigger( 'onDelete',array($this->$k));
  这里,在注册时还需要进行一项检查,即最小可用的用户ID值的获取。做这一项检查主要是为了确保每个系统中的用户ID值是相同地,这样便于进行用户资料的删除、更新等操作!
  当注册失败时需要自动触“删除用户”事件。这样可以确保每套系统所使用的用户基本资料是相同地。
  
  这里得指出一点Joomla/Mambo系统中的不足,如果删除多个用户时,它是“逐个”进行删除地,而不是批量来进行。很是不足!
  七、获取最小可用的用户ID值
  文件名:无,请参照“三、注册”
  此功能仅在系统功能中进行调用,详细的修改请参阅前述功能。主要是为了实现多系统之间用户ID值的统一。
2006-10-9 11:31 PM#1
查看资料  访问主页  发短消息  顶部
 
sadly (sadly)
管理员
Rank: 9Rank: 9Rank: 9
管理员


UID 1
精华 4
积分 2024
帖子 2015
金钱 1537 喜悦币
威望 40
人脉 447
阅读权限 200
注册 1970-1-1
来自 北京 三元桥
状态 离线
[推荐阅读] 一个论坛凭什么留住人[转]
此文章非首发
http://cache.baidu.com/c?word=ma ... a=16&user=baidu


http://www.baidu.com/baidu?word= ... 7%A8&tn=myie2dg




以PHP在中国的繁荣发展为己任
QQ:824008 MSN:sadly@phpx.com
2006-10-10 10:50 AM#2
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  顶部
 
菜鸟也要有理想
中级会员
Rank: 3Rank: 3
一般会员



UID 65342
精华 0
积分 439
帖子 426
金钱 439 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-1
状态 离线
[推荐阅读] 域名转向问题
村长是用MYIE2的
2006-10-11 07:20 AM#3
查看资料  发短消息  顶部
 
hgaoping (hgaoping)
注册会员
Rank: 2
初级会员



UID 67417
精华 0
积分 148
帖子 87
金钱 148 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-12-22
状态 离线
[推荐阅读] 超强问题
声明一下,此人的ID和我很像,大家不要误解呀。
2006-10-15 04:51 PM#4
查看资料  发短消息  顶部
 
hoping
新手上路
Rank: 1
初级会员



UID 63716
精华 0
积分 8
帖子 10
金钱 8 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-3-25
状态 离线
[推荐阅读] 请教..


QUOTE:
原帖由 sadly 于 2006-10-10 10:50 AM 发表
此文章非首发
http://cache.baidu.com/c?word=ma ... m/html/content/view ...
哦,得首发才行啊
2006-10-17 10:58 AM#5
查看资料  访问主页  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024613 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP