Преглед изворни кода

Sync Users - update created user

Piotr Labudda пре 11 година
родитељ
комит
1ddfdb9cc0
2 измењених фајлова са 41 додато и 23 уклоњено
  1. 1 1
      SE/VERSION
  2. 40 22
      SE/se-lib/SyncUsers.php

+ 1 - 1
SE/VERSION

@@ -1 +1 @@
-3.9.7.13
+3.9.7.14

+ 40 - 22
SE/se-lib/SyncUsers.php

@@ -42,29 +42,21 @@ class SyncUsers {
 				return false;
 			}
 
+			$usrTo = $this->_toStorage->getUser($usrLogin);
+			if (!$usrTo) {
+				return false;
+			}
+			$synced = $this->syncExistingUser($usrLogin, $usrFrom, $usrTo);
+			if (!$synced) {
+				return false;
+			}
+
 		}
 		else {// $usrFrom && $usrTo
-
-			$updateData = array();
-			if ($usrFrom->name != $usrTo->name) $updateData['name'] = $usrFrom->name;
-			if ($usrFrom->email != $usrTo->email) $updateData['email'] = $usrFrom->email;
-			if ($usrFrom->phone != $usrTo->phone) $updateData['phone'] = $usrFrom->phone;
-			if ($usrFrom->homeEmail != $usrTo->homeEmail) $updateData['homeEmail'] = $usrFrom->homeEmail;
-			if ($usrFrom->homePhone != $usrTo->homePhone) $updateData['homePhone'] = $usrFrom->homePhone;
-			if ($usrFrom->employeeType != $usrTo->employeeType) $updateData['employeeType'] = $usrFrom->employeeType;
-
-			if ($this->_fromStorage->isPasswordChanged($usrLogin)) $updateData['password'] = $usrFrom->password;
-
-			$updated = $this->_toStorage->updateUser($usrLogin, $updateData);
-			if (!$updated) {
-				$errors = $this->_toStorage->getRawErrorsList();
-				foreach ($errors as $vErr) {
-					$this->setError($vErr->code, $vErr->msg, $vErr->dbgMsg);
-				}
-				$this->setError(1, "TODO: update user {$usrLogin} from fromStorage to toStorage", '(' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . ')');
+			$synced = $this->syncExistingUser($usrLogin, $usrFrom, $usrTo);
+			if (!$synced) {
 				return false;
 			}
-
 		}
 
 		if ($syncGroups) {
@@ -89,6 +81,32 @@ class SyncUsers {
 		return true;
 	}
 
+	public function syncExistingUser($usrLogin, ObjectUser $usrFrom, ObjectUser $usrTo) {
+		if (!$usrFrom) return false;
+		if (!$usrTo) return false;
+
+		$updateData = array();
+		if ($usrFrom->name != $usrTo->name) $updateData['name'] = $usrFrom->name;
+		if ($usrFrom->email != $usrTo->email) $updateData['email'] = $usrFrom->email;
+		if ($usrFrom->phone != $usrTo->phone) $updateData['phone'] = $usrFrom->phone;
+		if ($usrFrom->homeEmail != $usrTo->homeEmail) $updateData['homeEmail'] = $usrFrom->homeEmail;
+		if ($usrFrom->homePhone != $usrTo->homePhone) $updateData['homePhone'] = $usrFrom->homePhone;
+		if ($usrFrom->employeeType != $usrTo->employeeType) $updateData['employeeType'] = $usrFrom->employeeType;
+
+		if ($this->_fromStorage->isPasswordChanged($usrLogin)) $updateData['password'] = $usrFrom->password;
+
+		$updated = $this->_toStorage->updateUser($usrLogin, $updateData);
+		if (!$updated) {
+			$errors = $this->_toStorage->getRawErrorsList();
+			foreach ($errors as $vErr) {
+				$this->setError($vErr->code, $vErr->msg, $vErr->dbgMsg);
+			}
+			$this->setError(1, "TODO: update user {$usrLogin} from fromStorage to toStorage", '(' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . ')');
+			return false;
+		}
+		return true;
+	}
+
 	public function getSyncUserTodoList($usrLogin, $syncGroups = false, $syncDisabled = false) {
 		$syncTodoList = array();
 		$usrFrom = $this->_fromStorage->getUser($usrLogin);
@@ -377,14 +395,14 @@ class SyncUsers {
 			}
 
 			$groupTo = $this->_toStorage->getGroup($groupID);
-			$synced = $this->syncExistingGroup($groupFrom, $groupTo, $syncNestedGroups);
+			$synced = $this->syncExistingGroup($groupID, $groupFrom, $groupTo, $syncNestedGroups);
 			if (!$synced) {
 				return false;
 			}
 
 		}
 		else {// $groupFrom && $groupTo
-			$synced = $this->syncExistingGroup($groupFrom, $groupTo, $syncNestedGroups);
+			$synced = $this->syncExistingGroup($groupID, $groupFrom, $groupTo, $syncNestedGroups);
 			if (!$synced) {
 				return false;
 			}
@@ -396,7 +414,7 @@ class SyncUsers {
 		return true;
 	}
 
-	public function syncExistingGroup(ObjectGroup $groupFrom, ObjectGroup $groupTo, $syncNestedGroups = false) {
+	public function syncExistingGroup($groupID, ObjectGroup $groupFrom, ObjectGroup $groupTo, $syncNestedGroups = false) {
 		if (!$groupFrom) return false;
 		if (!$groupTo) return false;