Issue#67 Only changed columns in UPDATE queries
This commit is contained in:
@@ -111,7 +111,7 @@ class EmailSync implements IUserAction
|
|||||||
}
|
}
|
||||||
|
|
||||||
$user->email = $ncMail;
|
$user->email = $ncMail;
|
||||||
$result = $this->userRepository->save($user);
|
$result = $this->userRepository->save($user, UserRepository::EMAIL_FIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class QuotaSync implements IUserAction
|
|||||||
}
|
}
|
||||||
|
|
||||||
$user->quota = $ncQuota;
|
$user->quota = $ncQuota;
|
||||||
$result = $this->userRepository->save($user);
|
$result = $this->userRepository->save($user, UserRepository::QUOTA_FIELD);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -484,7 +484,7 @@ final class UserBackend extends ABackend implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
$user->password = $passwordHash;
|
$user->password = $passwordHash;
|
||||||
$result = $this->userRepository->save($user);
|
$result = $this->userRepository->save($user, UserRepository::PASSWORD_FIELD);
|
||||||
|
|
||||||
if ($result === true) {
|
if ($result === true) {
|
||||||
$this->logger->info(
|
$this->logger->info(
|
||||||
@@ -588,7 +588,7 @@ final class UserBackend extends ABackend implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
$user->name = $displayName;
|
$user->name = $displayName;
|
||||||
$result = $this->userRepository->save($user);
|
$result = $this->userRepository->save($user, UserRepository::DISPLAY_NAME_FIELD);
|
||||||
|
|
||||||
if ($result === true) {
|
if ($result === true) {
|
||||||
$this->logger->info(
|
$this->logger->info(
|
||||||
|
|||||||
@@ -37,7 +37,10 @@ final class Query
|
|||||||
const FIND_USER = "find_user";
|
const FIND_USER = "find_user";
|
||||||
const FIND_USER_GROUPS = "find_user_groups";
|
const FIND_USER_GROUPS = "find_user_groups";
|
||||||
const FIND_USERS = "find_users";
|
const FIND_USERS = "find_users";
|
||||||
const SAVE_USER = "save_user";
|
const UPDATE_DISPLAY_NAME = "update_display_name";
|
||||||
|
const UPDATE_EMAIL = "update_email";
|
||||||
|
const UPDATE_PASSWORD = "update_password";
|
||||||
|
const UPDATE_QUOTA = "update_quota";
|
||||||
|
|
||||||
const EMAIL_PARAM = "email";
|
const EMAIL_PARAM = "email";
|
||||||
const GID_PARAM = "gid";
|
const GID_PARAM = "gid";
|
||||||
|
|||||||
@@ -157,12 +157,24 @@ class QueryProvider implements \ArrayAccess
|
|||||||
"WHERE $uUID LIKE :$searchParam " .
|
"WHERE $uUID LIKE :$searchParam " .
|
||||||
"ORDER BY $uUID",
|
"ORDER BY $uUID",
|
||||||
|
|
||||||
Query::SAVE_USER =>
|
Query::UPDATE_DISPLAY_NAME =>
|
||||||
"UPDATE $user " .
|
"UPDATE $user " .
|
||||||
"SET $uPassword = :$passwordParam, " .
|
"SET $uName = :$nameParam " .
|
||||||
"$uName = :$nameParam, " .
|
"WHERE $uUID = :$uidParam",
|
||||||
"$uEmail = :$emailParam, " .
|
|
||||||
"$uQuota = :$quotaParam " .
|
Query::UPDATE_EMAIL =>
|
||||||
|
"UPDATE $user " .
|
||||||
|
"SET $uEmail = :$emailParam " .
|
||||||
|
"WHERE $uUID = :$uidParam",
|
||||||
|
|
||||||
|
Query::UPDATE_PASSWORD =>
|
||||||
|
"UPDATE $user " .
|
||||||
|
"SET $uPassword = :$passwordParam " .
|
||||||
|
"WHERE $uUID = :$uidParam",
|
||||||
|
|
||||||
|
Query::UPDATE_QUOTA =>
|
||||||
|
"UPDATE $user " .
|
||||||
|
"SET $uQuota = :$quotaParam " .
|
||||||
"WHERE $uUID = :$uidParam",
|
"WHERE $uUID = :$uidParam",
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ use OCA\UserSQL\Query\DataQuery;
|
|||||||
*/
|
*/
|
||||||
class UserRepository
|
class UserRepository
|
||||||
{
|
{
|
||||||
|
const DISPLAY_NAME_FIELD = 0b001;
|
||||||
|
const EMAIL_FIELD = 0b0010;
|
||||||
|
const PASSWORD_FIELD = 0b0100;
|
||||||
|
const QUOTA_FIELD = 0b1000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var DataQuery The data query object.
|
* @var DataQuery The data query object.
|
||||||
*/
|
*/
|
||||||
@@ -98,19 +103,47 @@ class UserRepository
|
|||||||
* Save an user entity object.
|
* Save an user entity object.
|
||||||
*
|
*
|
||||||
* @param User $user The user entity.
|
* @param User $user The user entity.
|
||||||
|
* @param int $fields Fields to update.
|
||||||
*
|
*
|
||||||
* @return bool TRUE on success, FALSE otherwise.
|
* @return bool TRUE on success, FALSE otherwise.
|
||||||
*/
|
*/
|
||||||
public function save($user)
|
public function save($user, $fields)
|
||||||
{
|
{
|
||||||
return $this->dataQuery->update(
|
$status = true;
|
||||||
Query::SAVE_USER, [
|
|
||||||
|
if ($fields & self::DISPLAY_NAME_FIELD) {
|
||||||
|
$status =& $this->dataQuery->update(
|
||||||
|
Query::UPDATE_DISPLAY_NAME, [
|
||||||
Query::NAME_PARAM => $user->name,
|
Query::NAME_PARAM => $user->name,
|
||||||
|
Query::UID_PARAM => $user->uid
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($fields & self::PASSWORD_FIELD) {
|
||||||
|
$status =& $this->dataQuery->update(
|
||||||
|
Query::UPDATE_PASSWORD, [
|
||||||
Query::PASSWORD_PARAM => $user->password,
|
Query::PASSWORD_PARAM => $user->password,
|
||||||
|
Query::UID_PARAM => $user->uid
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($fields & self::EMAIL_FIELD) {
|
||||||
|
$status =& $this->dataQuery->update(
|
||||||
|
Query::UPDATE_EMAIL, [
|
||||||
Query::EMAIL_PARAM => $user->email,
|
Query::EMAIL_PARAM => $user->email,
|
||||||
|
Query::UID_PARAM => $user->uid
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ($fields & self::QUOTA_FIELD) {
|
||||||
|
$status =& $this->dataQuery->update(
|
||||||
|
Query::UPDATE_QUOTA, [
|
||||||
Query::QUOTA_PARAM => $user->quota,
|
Query::QUOTA_PARAM => $user->quota,
|
||||||
Query::UID_PARAM => $user->uid
|
Query::UID_PARAM => $user->uid
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $status;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user