phpbb2userdataprovider.class.php
来自「一个用PHP编写的」· PHP 代码 · 共 433 行 · 第 1/2 页
PHP
433 行
* @param status
* @param includeExtraInfo
* @param page
* @param itemsPerPage
* @return An array containing all the users.
*/
function getAllUsers( $status = USER_STATUS_ALL, $searchTerms = "", $orderBy = "", $page = -1, $itemsPerPage = DEFAULT_ITEMS_PER_PAGE )
{
$query = "SELECT * FROM ".$this->_phpbbprefix."users WHERE user_id >= 0 ORDER BY user_id ASC";
$result = $this->_dbc->Execute( $query, $page, $itemsPerPage );
$users = Array();
while ($info = $result->FetchRow( $result ))
array_push( $users, $this->_mapUserInfoObject( $info ));
$result->Close();
return $users;
}
/**
* 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 )
{
$query = "UPDATE ".$this->_phpbbprefix."users SET
username = '".Db::qstr($userInfo->getUserName())."',
user_email = '".Db::qstr($userInfo->getEmail())."',
user_active = '".Db::qstr($userInfo->getPassword())."'
WHERE user_id = '".Db::qstr($userInfo->getId())."'";
$result = $this->_dbc->Execute( $query );
if( !$result )
return false;
BaseUserDataProvider::updateUser( $userInfo );
// update plog's phpbb2_user table
$result = $this->updatepLogPHPBB2UserData( $userInfo );
return( $result );
}
/**
* @private
* Why the hell couldn't they make the user_id field auto-incrementable???
*/
function getLastPhpBBUserId()
{
$query = "SELECT MAX(user_id)+1 AS next_id FROM ".$this->_phpbbprefix."users";
$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 )
{
// update the phpbb table
$password = $user->getPassword();
$id = $this->getLastPhpBBUserId();
$query = "INSERT INTO ".$this->_phpbbprefix."users (user_id,username,user_password,user_email,user_active)
VALUES ($id, '".Db::qstr($user->getUserName())."','".md5($user->getPassword())."','".
Db::qstr($user->getEmail())."','1');";
$result = $this->_dbc->Execute( $query );
if( !$result )
return false;
$user->setId( $id );
// update plog's phpbb2_user table
$this->updatepLogPHPBB2UserData( $user );
return( $id );
}
/**
* @private
* Updates the plog-specific user data that is used when the phpbb2 integration is enabled, since
* plog has some extra information that does not fit anywhere in phpbb2
*
* @param user A UserInfo object
* @return true if successful or false otherwise
*/
function updatepLogPHPBB2UserData( &$user )
{
// is the user already there?
if( $this->getpLogPHPBBUserData( $user->getId())) {
// we need to run an UPDATE query...
$query = "UPDATE ".$this->getPrefix()."phpbb2_users
SET full_name = '".Db::qstr( $user->getFullName())."',
about = '".Db::qstr( $user->getAboutMyself())."',
properties = '".Db::qstr( serialize($user->getProperties()))."',
resource_picture_id = '".Db::qstr( $user->getPictureId())."',
status = '".Db::qstr( $user->getStatus())."'
WHERE phpbb_id = '".Db::qstr( $user->getId())."'";
}
else {
// we need to run an INSERT query...
$query = "INSERT INTO ".$this->getPrefix()."phpbb2_users
(full_name, about, properties, resource_picture_id,phpbb_id,status)
VALUES ('".Db::qstr( $user->getFullName())."', '".
Db::qstr($user->getAboutMyself())."','".
Db::qstr(serialize($user->getProperties()))."','".
Db::qstr($user->getPictureId())."','".
Db::qstr($user->getId())."','".
Db::qstr($user->getStatus())."');";
}
$result = $this->Execute( $query );
return( true );
}
/**
* @private
* Load the plog-specific phpbb2 user data
*
* @param userId
* @return A row with the extra user data or false otherwise
*/
function getpLogPHPBBUserData( $userId )
{
$query = "SELECT * FROM ".$this->getPrefix()."phpbb2_users WHERE phpbb_id = '".Db::qstr($userId)."'";
$result = $this->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 )
{
}
/**
* returns the total number of users
*
* @return total number of users
*/
function getNumUsers( $status = USER_STATUS_ALL )
{
//
// :TODO:
// add the status check here!
//
$query = "SELECT COUNT(id) AS total FROM ".$this->_phpbbprefix."users";
$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->_phpbbprefix."users WHERE user_email = '".Db::qstr($email)."'";
$result = $this->_dbc->Execute( $query );
if( !$result )
return false;
$ret = ($result->RecordCount() > 0);
$result->Close();
return $ret;
}
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?