主題: lifetype和discuz整合的思路
作者: xyan 於 三月 25, 2007, 03:13:35 下午
只是整合用户数据, 这样: (变量表意,并不实际存在,语句也表意,并不实际可用,要不就不叫思路了) {lifetype注册.php} input:$DZUSER //输入在DISCUZ注册的用户名 input:$DZPASS //输入在DISCUZ注册的密码 db............. //取DZ的用户数据库 if $DZUSER,md5('$DZPASS') valid && $USER != $DZUSER, //如果DZ的用户名密码正确,并且没有申请过lifetype { if $DZCREDITS >= 1000{ //如果dz用户的某个积分达到约定 $USER=$DZUSER //lifetype用户名等于DZ的 $PASS=$DZPASS //lifetype密码等于DZ的 $Email=$DZEMAIL //lifetype e-mail等于DZ的 } $DZCREDITS -= 1000 //减去相应积分 } 姓名自己输入,最后写数据库 DZ那里什麽都不用改 lifetype只要改注册部分吧 我觉得可行~大家指教~~ 慢慢学php ing 学好了就写:)
主題: Re: lifetype和discuz整合的思路
作者: ga009900 於 三月 26, 2007, 07:09:01 下午
discuz 已經有 X-Space 或者 SuperSite 了啊~
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 三月 26, 2007, 07:30:27 下午
是啊可是用的不爽啊 而且不开源
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 三月 26, 2007, 07:31:40 下午
discuz 已經有 X-Space 或者 SuperSite 了啊~
我以前一直用的X-space的,郁闷死了 好多bug 能自己改的又少 不开源,连标题都改不了~~
主題: Re: lifetype和discuz整合的思路
作者: markwu 於 三月 26, 2007, 08:26:46 下午
你覺得跟 DiscuZ 的整合會讓 LifeType 在大陸的推廣更順利嗎?
如果會,我可以考慮來作整合。包含 user 與文章。
Mark
主題: Re: lifetype和discuz整合的思路
作者: lonestone 於 三月 30, 2007, 11:05:01 下午
你觉得跟 DiscuZ 的整合会让 LifeType 在大陆的推广更顺利吗?
如果会,我可以考虑来作整合。包含 user 与文章。
Mark
我已经基本成功的整合了Discuz!的用户,采用的是userdataprovider接口,呵呵,老大有兴趣可以看看,希望有所贡献。不过由于lifetype的接口限制,有些小问题,不过基本不影响使用。比如删除用户的博客... 效果可以到http://bbs.cnfdc.com.cn注册帐号,然后到http://blog.cnfdc.com.cn/admin.php测试,现在这个系统还没上线运行,大家可以随便测试。 稍后给出整合源码。 整合的好处是显而易见的,dz是大陆最好的php论坛程序之一,官方整合的blog不好用,花哨,不规范,而且不开源,定制相当麻烦,不过模板好看些。 希望老大帮忙,完美整合。包括dz的程序的修改,接管x-space在dz中的功能,那就完美了。 还有个问题,就是lt1.2版本对于用户权限的修改,造成这个方案失效,表现为可以登录,但没有管理的权限。有了Mark大牛的帮助,我想就是小case了。
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 三月 31, 2007, 08:57:58 上午
你覺得跟 DiscuZ 的整合會讓 LifeType 在大陸的推廣更順利嗎?
如果會,我可以考慮來作整合。包含 user 與文章。
Mark
应该是有帮助的 但是我认为整合文章没什麽意义 只是把discuz用户作为注册blog的凭据,防止垃圾注册什麽的 对我有难度的就是cookies同步登录
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 三月 31, 2007, 09:00:18 上午
你觉得跟 DiscuZ 的整合会让 LifeType 在大陆的推广更顺利吗?
如果会,我可以考虑来作整合。包含 user 与文章。
Mark
我已经基本成功的整合了Discuz!的用户,采用的是userdataprovider接口,呵呵,老大有兴趣可以看看,希望有所贡献。不过由于lifetype的接口限制,有些小问题,不过基本不影响使用。比如删除用户的博客... 效果可以到http://bbs.cnfdc.com.cn注册帐号,然后到http://blog.cnfdc.com.cn/admin.php测试,现在这个系统还没上线运行,大家可以随便测试。 稍后给出整合源码。 整合的好处是显而易见的,dz是大陆最好的php论坛程序之一,官方整合的blog不好用,花哨,不规范,而且不开源,定制相当麻烦,不过模板好看些。 希望老大帮忙,完美整合。包括dz的程序的修改,接管x-space在dz中的功能,那就完美了。 还有个问题,就是lt1.2版本对于用户权限的修改,造成这个方案失效,表现为可以登录,但没有管理的权限。有了Mark大牛的帮助,我想就是小case了。 http://bbs.cnfdc.com.cn/admin.php: Object not found! The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again. If you think this is a server error, please contact the webmaster. Error 404 bbs.cnfdc.com.cn 03/31/07 09:59:53 Apache/2.2.3 (Win32) mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.0
主題: Re: lifetype和discuz整合的思路
作者: bigjj 於 三月 31, 2007, 10:55:39 上午
mark,别忘了大陆还有很多人都在用phpwind forum呢,等着你的好消息。
主題: Re: lifetype和discuz整合的思路
作者: lonestone 於 三月 31, 2007, 01:29:10 下午
你觉得跟 DiscuZ 的整合会让 LifeType 在大陆的推广更顺利吗?
如果会,我可以考虑来作整合。包含 user 与文章。
Mark
我已经基本成功的整合了Discuz!的用户,采用的是userdataprovider接口,呵呵,老大有兴趣可以看看,希望有所贡献。不过由于lifetype的接口限制,有些小问题,不过基本不影响使用。比如删除用户的博客... 效果可以到http://bbs.cnfdc.com.cn注册帐号,然后到http://blog.cnfdc.com.cn/admin.php测试,现在这个系统还没上线运行,大家可以随便测试。 稍后给出整合源码。 整合的好处是显而易见的,dz是大陆最好的php论坛程序之一,官方整合的blog不好用,花哨,不规范,而且不开源,定制相当麻烦,不过模板好看些。 希望老大帮忙,完美整合。包括dz的程序的修改,接管x-space在dz中的功能,那就完美了。 还有个问题,就是lt1.2版本对于用户权限的修改,造成这个方案失效,表现为可以登录,但没有管理的权限。有了Mark大牛的帮助,我想就是小case了。 http://bbs.cnfdc.com.cn/admin.php: Object not found! The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again. If you think this is a server error, please contact the webmaster. Error 404 bbs.cnfdc.com.cn 03/31/07 09:59:53 Apache/2.2.3 (Win32) mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.0 注意地址是 "效果可以到http:// bbs.cnfdc.com.cn注册帐号,然后到http:// blog.cnfdc.com.cn/admin.php测试,现在这个系统还没上线运行,大家可以随便测试。"
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 四月 01, 2007, 09:15:10 上午
啊 不好意思
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 四月 01, 2007, 09:19:34 上午
wOW 真的很好哎 支持支持 就是一般人找不到博客地址~放个地址到登录进去的第一张页面好了
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 四月 01, 2007, 09:24:41 上午
网址有问题哦 这个也是我目前遇到的问题~ 分类 静态链接 引用 回复 统统打不开`
主題: Re: lifetype和discuz整合的思路
作者: lonestone 於 四月 01, 2007, 11:57:13 下午
网址有问题哦 这个也是我目前遇到的问题~ 分类 静态链接 引用 回复 统统打不开`
找不到页面吗?我怎么没有遇到了?
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 四月 02, 2007, 06:41:19 下午
不是 是点了之后没有实质性的变化 点了之后还是在该用户的首页 你自己注册个用户试试
主題: Re: lifetype和discuz整合的思路
作者: panying 於 四月 07, 2007, 12:42:41 上午
lifetype管理和維護方面還是比較復雜,如果沒有php經驗會比較困難,Discuz雖然用的人很多,但很多不懂php的。。。
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 四月 07, 2007, 06:43:06 上午
对 是的 所以不可能人人都用
主題: Re: lifetype和discuz整合的思路
作者: lonestone 於 四月 16, 2007, 10:17:56 下午
这个贴可不能就这么沉下去,我还指望Mark帮我看看程序呢?!现在公布我搞的Discuz!的用户类,希望大家一起讨论完善它,大家都可以用起来。我这个类需要在dz的cdb_members表加一个int字段blogstatus,标记lifetype是否开通。 <?php
/*
* Name: DiscuzUserDataProvider (support read user info from dz)
* Version: 1.0
* Author: 王勇
* Contact: wangyong.yichang@gmail.com
* Release: 2007-3-9
*
* 注意事项:
* Could not update user info in dz.
* Could not delete user from dz
* Do not support dz user's Muti-user group , only support main group (todo in future)
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
include_once( PLOG_CLASS_PATH . "class/dao/userdata/baseuserdataprovider.class.php" ); include_once( PLOG_CLASS_PATH . "class/database/db.class.php" );
/** * Model representing the users in our application. Provides the methods such as * authentication and querying for users. * * \ingroup User_Data_Providers */ class DiscuzUserDataProvider extends BaseUserDataProvider { var $_dbc; //database connect var $_dzprefix; //dz database prefix var $_allowedusergroups; //which group in dz will be active . var $_disallowedusergroups; //which group in dz will be not active , if you have block group , set it var $_adminusergroups; //which group in dz will have admin permission? // var $_adminusers; //special user in dz to have admin permission. /** * Initializes the model */ function DiscuzUserDataProvider( $providerConfig ) { $this->BaseUserDataProvider( $providerConfig ); // initialize the database connection based on our parameters $config = $this->getProviderConfiguration(); $user = $config->getValue( "user" ); $pass = $config->getValue( "password" ); $host = $config->getValue( "host" ); $db = $config->getValue( "database" );
$this->_dzprefix = $config->getValue( "prefix" ); $this->_allowedusergroups = $config->getValue( "allowgroup" ); $this->_disallowedusergroups = $config->getValue( "denygroup" ); $this->_adminusergroups = $config->getValue( "admingroup" ); // $this->_adminusers = $config->getValue( "adminuser" ); $this->_dbc = & Db::getNewDb( $host, $user, $pass, $db ); $this->_dbc->Execute("set names 'gbk'"); }
function dzAllowed( $row ) { //echo "dzAllowed called".$row['groupid']; if ( !in_array( $row['groupid'], $this->_disallowedusergroups ) ) if ( in_array( $row['groupid'], $this->_allowedusergroups ) ) return true; // echo "dzAllowed return false"; return false; }
function dzAdmin( $row ) { // echo "dzAdmin called"; if ( in_array( $row['groupid'], $this->_adminusergroups ) ) return true; // if ( in_array( $row['uid'], $this->_adminusers ) ) // return true; // echo "dzAdmin return false"; return false; }
function dzCheckPassword( $pass , $row ) { // echo("dzCheckPassword called"); if ( md5( $pass ) == $row['password'] ) return true; return false; }
/** * Returns true if the user is in the database and the username * and password match * * @param user $ Username of the user who we'd like to authenticate * @param pass $ Password of the user * @return true if user and password correct or false otherwise. */ function authenticateUser( $user, $pass ) { $query = "SELECT * FROM " . $this->_dzprefix . "members WHERE username = '" . Db::qstr( $user ) . "'";
$result = $this->_dbc->Execute( $query );
if ( !$result ) return false;
$ret = ( $result->RecordCount() == 1 );
if ( $ret ) $row = $result->FetchRow();
$result->Close();
if ( $ret && $this->dzCheckPassword( $pass, $row ) && $this->dzAllowed( $row ) ) return true; else return false; }
/** * Returns all the information associated to the user given * * @param user $ Username of the user from who we'd like to get the information * @param pass $ Password of the user we'd like to get the information * @return Returns a UserInfo object with the requested information, or false otherwise. */ function getUserInfo( $user, $pass ) { $query = "SELECT * FROM " . $this->_dzprefix . "members WHERE username = '" . Db::qstr( $user ) . "'"; $result = $this->_dbc->Execute( $query );
if ( !$result ) return false;
$row = $result->FetchRow(); $result->Close();
if ( !$this->dzCheckPassword( $pass, $row ) ) return false;
return( $this->_mapUserInfoObject( $row ) ); }
/** * Retrieves the user information but given only a username * * @param username $ The username of the user * @return Returns a UserInfo object with the requested information, or false otherwise. */ function getUserInfoFromUsername( $username ) { $query = "SELECT * FROM " . $this->_dzprefix . "members WHERE username = '" . Db::qstr( $username ) . "'"; $result = $this->_dbc->Execute( $query );
if ( !$result ) return false;
if ( $result->RowCount() == 0 ) { $result->Close(); return false; }
$row = $result->FetchRow(); $result->Close();
return( $this->_mapUserInfoObject( $row ) ); }
/** * Retrieves the user infromation but given only a userid * * @param userId $ User ID of the user from whom we'd like to get the information * @return Returns a UserInfo object with the requested information, or false otherwise. */ function getUserInfoFromId( $userid, $extendedInfo = false ) { include_once( PLOG_CLASS_PATH . "class/dao/userpermissions.class.php" );
$query = "SELECT * FROM " . $this->_dzprefix . "members WHERE uid = '" . Db::qstr( $userid ) . "'";
$result = $this->_dbc->Execute( $query );
if ( !$result ) return false;
$row = $result->FetchRow(); $result->Close(); // fetch the user permissions // $perms = new UserPermissions(); // $row["site_admin"] = $perms->isSiteAdmin( $userid ); return( $this->_mapUserInfoObject( $row ) ); }
function dzAddBlog( $row ) { // create a new blog include_once( PLOG_CLASS_PATH . "class/dao/blogs.class.php" ); include_once( PLOG_CLASS_PATH . "class/dao/articles.class.php" ); include_once( PLOG_CLASS_PATH . "class/dao/articlecategories.class.php" );
$blogs = new Blogs(); $blog = new BlogInfo( $row["user"], // name of the new blog $row["id"], // id of the owner "", // no about "" ); // no properties either $newBlogId = $blogs->addBlog( $blog ); // add a default category and a default post $articleCategories = new ArticleCategories(); $articleCategory = new ArticleCategory( "默认分类", "", $newBlogId, true ); $catId = $articleCategories->addArticleCategory( $articleCategory ); $config = & Config::getConfig(); $locale = & Locales::getLocale( $config->getValue( "default_locale" ) ); $articleTopic = $locale->tr( "register_default_article_topic" ); $articleText = $locale->tr( "register_default_article_text" ); $article = new Article( $articleTopic, $articleText, Array( $catId ), $row["uid"], $newBlogId, POST_STATUS_PUBLISHED, 0, Array(), "welcome" ); $t = new Timestamp(); $article->setDateObject( $t ); $articles = new Articles(); $articles->addArticle( $article );
//修改dz数据库的blogstatus状态为1 $sql="update " . $this->_dzprefix . "members set blogstatus=1 where uid=".$row["uid"]; $this->_dbc->Execute($sql);
// lt_include( PLOG_CLASS_PATH."class/dao/permissions.class.php" ); // lt_include( PLOG_CLASS_PATH."class/dao/userpermissions.class.php" ); // $perms = new Permissions(); // $loginPerm = $perms->getPermissionByName( "login_perm" ); // $userPerms = new UserPermissions(); // $userPerm = new UserPermission( $row["uid"], 0, $loginPerm->getId()); // $userPerms->grantPermission( $userPerm );
}
function _mapUserInfoObject( $row, $extraInfo = false ) { include_once( PLOG_CLASS_PATH . "class/dao/userpermissions.class.php" );
$plogDzData = $this->getpLogDzUserData( $row["uid"] );
$row["user"] = $row["username"]; $row["password"] = $row["password"]; //todo $row["email"] = $row["email"]; // $row["about"] = $plogDzData["bio"]; $row["full_name"] = $plogDzData["nickname"]; // $row["resource_picture_id"] = $plogDzData["resource_picture_id"]; // if( $row["resource_picture_id"] == "" ) $row["resource_picture_id"] = 0; $row["properties"] = serialize( Array() ); $row["id"] = $row["uid"]; $row["status"] = $this->dzAllowed( $row ) ? USER_STATUS_ACTIVE : USER_STATUS_DISABLED; $row["site_admin"] = $this->dzAdmin( $row )?1:0; // does this dz user have a blog yet? If so, create one if the configuration // of the user data provider says so $providerConfig = $this->getProviderConfiguration(); if ( $providerConfig->getValue( "createBlogIfNotExisting" ) ) { $userInfo = BaseUserDataProvider::mapRow( $row, true ); // check if this user is assigned to any blog $userBlogs = $userInfo->getBlogs(); //$this->log->debug( "dz: checking if user " . $row["user"] . " has at least one blog..." ); if ( empty( $userBlogs ) ) { //$this->log->debug( "dz: creating new blog for user!" ); $this->dzAddBlog( $row ); $userInfo->setBlogs( $this->getUsersBlogs( $userInfo->getId() ) ); } else { //$this->log->debug( "he already has one!!!" ); } } else { $userInfo = BaseUserDataProvider::mapRow( $row ); }
return( $userInfo ); }
/** * Returns an array with all the users available in the database * * @param status $ * @param includeExtraInfo $ * @param page $ * @param itemsPerPage $ * @return An array containing all the users. */ function getAllUsers( $status = USER_STATUS_ALL, $searchTerms = "", $page = -1, $itemsPerPage = DEFAULT_ITEMS_PER_PAGE ) { $where = ""; switch ( $status ) { case user_status_all: $where = ""; break; case user_status_active: $where = "groupid in (" . implode( ",", $this->_allowedusergroups ) . ")"; break; case user_status_unconfirmed: case user_status_disabled: $where = "not(groupid in (" . implode( ",", $this->_allowedusergroups ) . "))"; break; }
if ( $searchTerms != "" ) { if ( $where != "" ) $where = $where . " AND " . ( $this->getSearchConditions( $searchTerms ) ); else $where = $this->getSearchConditions( $searchTerms ); }
if ( $where != "" ) $where = " where blogstatus=1 and " . $where; else $where = " where blogstatus=1";
$query = "SELECT * FROM " . $this->_dzprefix . "members" . $where . " ORDER BY uid ASC"; $result = $this->_dbc->Execute( $query, $page, $itemsPerPage );
$users = Array();
if ($result&& $info = $result->FetchRow( $result ) ) { array_push( $users, $this->_mapUserInfoObject( $info ) ); $result->Close(); }
return $users; }
主題: Re: lifetype和discuz整合的思路
作者: lonestone 於 四月 16, 2007, 10:18:23 下午
<?php /** * Updates the information related to a user * * @param userInfo $ An UserInfo object containing the <b>already udpated</b> information of the * user we would like to update. * @return Returns true if ok or false otherwise. */ function updateUser( $userInfo ) { $result = $this->update( $userInfo ); if( $result ) { // remove the old data $this->_cache->removeData( $userInfo->getId(), CACHE_USERINFO ); $this->_cache->removeData( $userInfo->getUsername(), CACHE_USERIDBYNAME ); }
BaseUserDataProvider::updateUser( $userInfo ); return $this->updatepLogDzUserData( $userInfo ); //nerver change data in dz table , just return the updatepLogDzUserData' return value // die("!!!!"); // $query = "UPDATE " . $this->_dzprefix . "members SET // username = '" . Db::qstr( $userInfo->getUserName() ) . "', // email = '" . Db::qstr( $userInfo->getEmail() ) . "', // WHERE uid = '" . Db::qstr( $userInfo->getId() ) . "'"; //todo // // user_active = '".Db::qstr($userInfo->getPassword())."' // $result = $this->_dbc->Execute( $query ); // if ( !$result ) // return false; // BaseUserDataProvider::updateUser( $userInfo ); // // update plog's phpbb2_user table // $result = $this->updatepLogDzUserData( $userInfo ); // return( $result ); }
/** * * @private Why the hell couldn't they make the user_id field auto-incrementable??? */ function getLastDzUserId() { $query = "SELECT MAX(uid)+1 AS next_id FROM " . $this->_dzprefix . "members";
$result = $this->_dbc->Execute( $query );
$row = $result->FetchRow(); $result->Close();
return( $row["next_id"] ); }
/** * Adds a user to the database. * * @param user $ An UserInfo object with the necessary information * @return Returns the identifier assigned to the user, or false if there was any error. It will also modify the * UserInfo object passed by parameter and set its database id. */ function addUser( & $user ) { return false; //nerver change data in dz table , just tell pblog can not do that $password = $user->getPassword(); $id = $this->getLastDzUserId();
$query = "INSERT INTO " . $this->_dzprefix . "user (userid,username,password,useremail)
VALUES ($id, '" . Db::qstr( $user->getUserName() ) . "','" . md5( $user->getPassword() ) . "','" . Db::qstr( $user->getEmail() ) . "');";
$result = $this->_dbc->Execute( $query );
if ( !$result ) return false;
$user->setId( $id ); // update plog's phpbb2_user table $this->updatepLogDzUserData( $user );
return( $id ); }
/** * * @private Updates the plog-specific user data that is used when the dz integration is enabled, since * plog has some extra information that does not fit anywhere in dz * @param user $ A UserInfo object * @return true if successful or false otherwise */ function updatepLogDzUserData( & $user ) { // is the user already there? if($user->getStatus()==2) { // delete blog include_once( PLOG_CLASS_PATH . "class/dao/blogs.class.php" ); include_once( PLOG_CLASS_PATH . "class/dao/bloginfo.class.php" );
$blogs = new Blogs(); $blogsinfoarray = $this->getUsersBlogs($user->getId()); //print_r($blogs[0]->getId());die(); foreach($blogsinfoarray as $bloginfo) { $blogs->deleteBlog( $bloginfo->getId()); } $this->deleteUser($user->getId());
}
if ( $this->getpLogDzUserData( $user->getId() ) ) { //$this->log->debug( "dz user " . $user->getUsername() . " already exists! Running an UPDATE query..." ); // we need to run an UPDATE query... $query = "UPDATE " . $this->_dzprefix . "memberfields
SET nickname = '" . Db::qstr( $user->getFullName() ) ."' WHERE uid = '" . Db::qstr( $user->getId() ) . "'"; // bio = '" . Db::qstr( $user->getAboutMyself() ) . "' // properties = '".Db::qstr( serialize($user->getProperties()))."', // resource_picture_id = '".Db::qstr( $user->getPictureId())."', $querypw = "update " . $this->_dzprefix . "members set `password`='" . Db::qstr( $user->getMD5Password() ) . "', email= '" . Db::qstr( $user->getEmail() )."' where uid = '" . Db::qstr( $user->getId() ) . "'"; } // else // { // // we need to run an INSERT query... // //$this->log->debug( "dz user " . $user->getUsername() . " does NOT exist yet! Running an INSERT query..." ); // $query = "INSERT INTO " . $this->_dzprefix . "memberfields // (nickname, bio) // VALUES ('" . Db::qstr( $user->getFullName() ) . "', '" . // Db::qstr( $user->getAboutMyself() ) . "')"; // } $result = $this->_dbc->Execute( $query ); $result = $this->_dbc->Execute( $querypw ); return( true ); }
/** * * @private Load the plog-specific dz user data * @param userId $ * @return A row with the extra user data or false otherwise */ function getpLogDzUserData( $uid ) { $query = "SELECT * FROM " . $this->_dzprefix . "members as u, " . $this->_dzprefix . "memberfields as m WHERE u.uid=m.uid and u.uid = '" . Db::qstr( $uid ) . "'";
$result = $this->_dbc->Execute( $query );
if ( !$result ) return false;
if ( $result->RowCount() == 0 ) { $result->Close(); return false; }
$ret = $result->FetchRow(); $result->Close();
return $ret; }
/** * Removes users from the database * * @param userId $ The identifier of the user we are trying to remove */ function deleteUser( $userId ) { //修改dz数据库的blogstatus状态为0 $sql="update " . $this->_dzprefix . "members set blogstatus=0 where uid='".$userId."'"; $this->_dbc->Execute($sql); }
/** * returns the total number of users * * @return total number of users */ function getNumUsers( $status = USER_STATUS_ALL , $searchTerms = "" ) { $where = "blogstatus=1 "; switch ( $status ) { case user_status_all: $where = ""; break; case user_status_active: $where = "and groupid in (" . implode( ",", $this->_allowedusergroups ) . ")"; break; case user_status_unconfirmed: case user_status_disabled: $where = "and not(groupid in (" . implode( ",", $this->_allowedusergroups ) . "))"; break; }
if ( $searchTerms != "" ) { if ( $where != "" ) $where = $where . " AND " . $this->getSearchConditions( $searchTerms ); else $where = $this->getSearchConditions( $searchTerms ); }
if ( $where != "" ) $where = " where " . $where;
$query = "SELECT COUNT(uid) AS total FROM " . $this->_dzprefix . "members" . $where;
$result = $this->_dbc->Execute( $query ); // return no users if this doesn't work! if ( !$result ) return 0;
$row = $result->FetchRow(); $result->Close();
if ( $row["total"] == "" ) $row["total"] = 0;
return( $row["total"] ); }
/** * check if the email account has been registered * * @return true if the email account has been registered */ function emailExists( $email ) { $query = "SELECT * FROM " . $this->_dzprefix . "members WHERE email = '" . Db::qstr( $email ) . "'";
$result = $this->_dbc->Execute( $query );
if ( !$result ) return false; $ret = ( $result->RecordCount() > 0 ); $result->Close(); return $ret; }
/** * * @see Model::getSearchConditions */ function getSearchConditions( $searchTerms ) { include_once( PLOG_CLASS_PATH . "class/dao/searchengine.class.php" ); // prepare the query string $searchTerms = SearchEngine::adaptSearchString( $searchTerms );
return( "(username LIKE '%" . $searchTerms . "%')" ); }
/** * Returns an array with all the users that belong to the given * blog. * * @param blogId $ The blog identifier. * @param includeOwner $ Wether to include the owner of the blog or not. * @param status $ * @param searchTerms $ * @return An array with the information about the users who belong in * one way or another to that blog. */ function getBlogUsers( $blogId, $includeOwner = true, $status = USER_STATUS_ALL, $searchTerms = "" ) { $userids = Array(); $users = Array(); $prefix = $this->getPrefix(); // get the information about the owner, if requested so if ( $includeOwner ) { $query = "SELECT {$prefix}blogs.owner_id as userid FROM {$prefix}blogs
WHERE {$prefix}blogs.id = '" . Db::qstr( $blogId ) . "';"; $result = $this->Execute( $query );
if ( !$result ) return $users;
$row = $result->FetchRow(); $result->Close();
array_push( $userids, $row['userid'] ); } // now get the other users who have permission for that blog. $query2 = "SELECT {$prefix}users_permissions.user_id as userid FROM {$prefix}users_permissions
WHERE {$prefix}users_permissions.blog_id = '" . Db::qstr( $blogId ) . "';"; $result2 = $this->Execute( $query2 );
if ( $result2 ) { while ( $row = $result2->FetchRow() ) { array_push( $userids, $row['userid'] ); } $result2->Close(); }
if ( !is_array( $userids ) ) // return empty value { return $users; }
$where = ""; switch ( $status ) { case user_status_all: $where = ""; break; case user_status_active: $where = "groupid in (" . implode( ",", $this->_allowedusergroups ) . ")"; break; case user_status_unconfirmed: case user_status_disabled: $where = "not(groupid in (" . implode( ",", $this->_allowedusergroups ) . "))"; break; }
if ( $searchTerms != "" ) { if ( $where != "" ) $where = $where . " AND " . ( $this->getSearchConditions( $searchTerms ) ); else $where = $this->getSearchConditions( $searchTerms ); }
if ( $where != "" ) $where = $where . " AND ";
$where = $where . " (uid in (" . implode( ",", $userids ) . "))";
if ( $where != "" ) $where = " where " . $where;
$query3 = "SELECT * FROM " . $this->_dzprefix . "members" . $where . " ORDER BY uid ASC";
$result3 = $this->_dbc->Execute( $query3 );
if ($result3 && $info = $result3->FetchRow( $result3 ) ) { array_push( $users, $this->_mapUserInfoObject( $info ) ); $result3->Close(); } return $users; } }
?>
主題: Re: lifetype和discuz整合的思路
作者: xyan 於 四月 17, 2007, 08:09:53 下午
看来我php基础还是差点呢 继续学~
主題: Re: lifetype和discuz整合的思路
作者: forlife 於 五月 01, 2007, 03:05:52 上午
其實最簡單的方法, 可不可以這樣呢: 注冊lifetype時, 同時注冊discuz 登入lifetype時, 同時登入discuz 在lifetype加一條連結到discuz的Link 同樣在discuz加一條連結到lifetype的Link
More: 登入時根據用戶名, 在discuz顯示用戶blog的link 在lifetype的summary顯示新post等內容
這樣雖然用戶資料重覆了, 但卻不會影響到對方, 使雙方都能獨立運作.
主題: Re: lifetype和discuz整合的思路
作者: lonestone 於 五月 10, 2007, 09:19:56 上午
光说不做,哈哈,等你来弄呢
主題: Re: lifetype和discuz整合的思路
作者: yuhai00 於 十一月 26, 2007, 03:02:17 下午
我最近也要做 lifetype和discuz的整合,没有太多太好的思路。希望版主和各位朋友能给点建议和帮助。 先谢谢各位了。 期待版主的整合的文档早点出来。呵呵 :-)
主題: Re: lifetype和discuz整合的思路
作者: andywang 於 三月 07, 2008, 10:23:50 上午
这个到底完整做成功了没有呢?如果哪位高手做成功了,直接把文件贡献出来,免得我们这些菜鸟再痛苦的测试啊,热烈期盼中~~~~
主題: Re: lifetype和discuz整合的思路
作者: Mr.dodo 於 三月 31, 2008, 11:40:08 上午
在哪里下啊.~~~~~~~~~~
主題: Re: lifetype和discuz整合的思路
作者: zizi474lr 於 六月 15, 2008, 05:35:32 上午
:'( :'( :'( :'(。。。着急想要pw能用的!!~~~~~~~~~~phpwind
|