2006-10
5
这是自己分离出来的代码,没有自己测试,所以很可能无法正常运行。主要是示例wordpress.mu注册和登陆时的一些操作.
- <?php
- /**
- 这个wp_应该跟wp里设的前缀是一样的.
- */
- define("WP_DB_PREFIX_FORXOOPS","wp_");
- /**
- 这是运行WP.mu的主站的域名.
- */
- define("WP_BLOG_HOST_FORXOOPS","www.example.com");
- class xoops_mu{
- /**
- 在Xoops登陆成功后,请调用一下这个函数,这样在Wordpress中也就能登陆了。
- 注意,这个pass是实际用户输入的pass的两次md5加密。
- @author renlu xu<helloasp@hotmail.com>
- */
- function userLogin($user,$pass,$expire,$path="/",$domain="")
- {
- if(!($expire>60))
- {
- /**
- 如果没有指定cookie保存时间,默认保存1年。
- */
- $expire=365*24*3600;
- }
- if($domain=="")
- {
- /**
- 如果没有指定cookie的域名,默认用机器的域名。不过要做多子站的话,要设置一下。比如,设为".example.com"。
- */
- $domain=$_SERVER["HTTP_HOST"];
- }
- setcookie("wordpressuser",$user,$expire,$path,$domain);
- setcookie("wordpresspass",$pass,$expire,$path,$domain);
- }
- function changepass($uname,$newpass)
- {
- global $xoopsDB;
- $xoopsDB->queryF("update ".WP_DB_PREFIX_FORXOOPS."users set user_pass='".md5($newpass)."' where user_login='".$uname."'");
- }
- function logout($expire,$path="/",$domain="")
- {
- if(!($expire>60))
- {
- /**
- 如果没有指定cookie保存时间,默认保存1年。
- */
- $expire=365*24*3600;
- }
- if($domain=="")
- {
- /**
- 如果没有指定cookie的域名,默认用机器的域名。不过要做多子站的话,要设置一下。比如,设为".example.com"。
- */
- $domain=$_SERVER["HTTP_HOST"];
- }
- setcookie("wordpressuser","",$expire,$path,$domain);
- setcookie("wordpresspass","",$expire,$path,$domain);
- }
- /**
- 往Wp中插中新用户的语句.在XOOPS中注册后,应该调用这一个函数。
- 只加用户,不加博客设置。
- */
- function addNewWPUser($uname,$upass,$email,$domain="",$path="/",$url="",$nickname="")
- {
- global $xoopsDB;
- if($domain=="")
- {
- $domain=$uname;
- }
- if($nickname=="")
- {
- $nickname=$uname;
- }
- if($url=="")
- {
- $url="http://".$domain.$path;
- }
- $wpInsert["user_login"]=$uname;
- $wpInsert["user_pass"]=$upass;
- $wpInsert["user_nicename"]=$nickname;
- $wpInsert["user_email"]=$email;
- $wpInsert["user_url"]=$url;
- $wpInsert["user_registered"]=date("Y-m-d H:i:s");
- $wpInsert["user_status"]=0;
- $wpInsert["display_name"]=$uname;
- $wpInsert["spam"]=0;
- $wpInsert["deleted"]=0;
- /**
- 生成插入数据的sql 语句.
- */
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."users",$wpInsert);
- $xoopsDB->queryF($sql);
- $AffectedRows=$xoopsDB->getAffectedRows();
- if(!$AffectedRows)
- else
- {
- return false;
- }
- $wpInsert=array();
- $wpInsert["domain"]=$domain;
- $wpInsert["path"]=$path;
- $wpInsert["title"]=$_POST["title"];
- $wpInsert["user_login"]=$uname;
- $wpInsert["user_email"]=$email;
- $wpInsert["registered"]=date("Y-m-d H:i:s");
- $wpInsert["active"]=1;
- $wpInsert["activation_key"]="000000";
- $wpInsert["meta"]='a:2:{s:7:"lang_id";s:2:"en";s:6:"public";i:1;}';
- $wpInsert["activated"]=date("Y-m-d H:i:s");
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."signups",$wpInsert);
- $xoopsDB->queryF($sql);
- $AffectedRows=0;
- $AffectedRows=$xoopsDB->getAffectedRows();
- if(!$AffectedRows)
- else
- {
- return false;
- }
- }
- /**
- 创建 WP的blog.如果添加WP用户成功,还应调用这一个函数。
- */
- function CreateBlog($uname,$udomain,$nickname='',$path="/")
- {
- global $xoopsDB;
- if($domain=="")
- {
- $domain=$uname;
- }
- /**
- 这一段还不太懂...
- */
- $wpInsert=array();
- $wpInsert["site_id"]=1;
- $wpInsert["domain"]=$udomain;
- $wpInsert["path"]=$path;
- $wpInsert["registered"]=date("Y-m-d H:i:s");
- $wpInsert["public"]=1;
- $wpInsert["archived"]=0;
- $wpInsert["mature"]=0;
- $wpInsert["spam"]=0;
- $wpInsert["deleted"]=0;
- $wpInsert["lang_id"]=0;
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."blogs",$wpInsert);
- $xoopsDB->queryF($sql);
- /**
- 得到wp中的uid
- */
- $sql=("select * from ".WP_DB_PREFIX_FORXOOPS."users where user_login='".$uname."'");
- $rs=$xoopsDB->query($sql);
- $row=$xoopsDB->FetchArray($rs);
- $id=$row["ID"];
- $url=$row["user_url"];
- $email=$row["user_email"];
- $sql=fileoper::readover("wp_newblog.sql");
- /**
- 得到了一系统插入乱七八糟的数据的SQL,我还没有去分析这些都是做什么的。
- 不过我试着删除了几条记录,再创建的用户就无法登陆了,看来不要随便改。
- 为了提示数据库性能,可以试探着删一些东西去,毕竟WP不知道都插入了一些什么东东。
- */
- $sql=str_replace("{WP}",WP_DB_PREFIX_FORXOOPS."$id",$sql);
- $sql=str_replace("{WP_SITE_URL}","http://".WP_BLOG_HOST_FORXOOPS.$path,$sql);
- $sql=str_replace("{WP_HISSITE_URL}",$url,$sql);
- $sql=str_replace("{WP_HISEMAIL}",$email,$sql);
- $sql=str_replace("{WP_AUTHOR}",$id,$sql);
- $sql=str_replace("\r","",$sql);
- $a=explode(";\n",$sql);
- while(list($k,$v)=each($a)){
- $xoopsDB->queryF($v);
- }
- /**
- 现在插入的这几个是比较重要的,好像缺少了就无法运行。
- */
- $wpInsert["user_id"]=$id;
- $wpInsert["meta_key"]="nickname";
- $wpInsert["meta_value"]=$nickname;
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
- $wpInsert["user_id"]=$id;
- $wpInsert["meta_key"]="primary_blog";
- $wpInsert["meta_value"]=$id;
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
- $wpInsert["user_id"]=$id;
- $wpInsert["meta_key"]="source_domain";
- $wpInsert["meta_value"]="$udomain";
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
- $wpInsert["user_id"]=$id;
- $wpInsert["meta_key"]="wp_".$id."_capabilities";
- $wpInsert["meta_value"]='a:1:{s:13:"administrator";b:1;}';
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
- $wpInsert["user_id"]=$id;
- $wpInsert["meta_key"]="wp_".$id."_user_level";
- $wpInsert["meta_value"]="10";
- $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
- }
- }
- ?>
还没有评论。