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

Updating L_APPOITMENT_USER, A_RECORD_CREATE_DATE, A_RECORD_UPDATE_DATE and changing homedir/maildir on server after change of username.

Mariusz Muszyński пре 10 година
родитељ
комит
84cdb8b427
1 измењених фајлова са 66 додато и 0 уклоњено
  1. 66 0
      SE/se-lib/Route/FixUsersLongLogin.php

+ 66 - 0
SE/se-lib/Route/FixUsersLongLogin.php

@@ -132,6 +132,7 @@ SQL;
 				} else if ($affected == 0) {
 					echo '<div class="alert alert-info">' . "Nic nie zmieniono" . '</div>';
 				}
+                if ($affected) $this->updateDatabaseAndPaths($currentLogin, $newLogin);
 			} catch (Exception $e) { ?>
 				<div class="alert alert-danger">
 					<?php echo $e->getMessage(); ?>
@@ -178,4 +179,69 @@ SQL;
 		return $affected;
 	}
 
+	public function updateDatabaseAndPaths($currentLogin, $newLogin) {
+		$db = DB::getDB();
+		$columns = Array("L_APPOITMENT_USER","A_RECORD_CREATE_AUTHOR","A_RECORD_UPDATE_AUTHOR");
+		$dbName = $db->getDatabaseName();
+
+		echo '<div class="alert alert-info" role="alert">';
+		foreach ($columns as $column) {
+			$sql = <<<SQL
+				select cols.`TABLE_NAME`
+				from `INFORMATION_SCHEMA`.`COLUMNS` cols
+				join `INFORMATION_SCHEMA`.`TABLES` tabs
+					on cols.TABLE_SCHEMA=tabs.TABLE_SCHEMA
+					and cols.TABLE_NAME=tabs.TABLE_NAME
+					and tabs.TABLE_TYPE!='VIEW'
+				where cols.`TABLE_SCHEMA`='{$dbName}'
+				and cols.`COLUMN_NAME`='{$column}'
+SQL;
+			$res = $db->query($sql);
+
+			while ($r = $db->fetch($res)) {
+				$tableName = $r->TABLE_NAME;
+				$sql = <<<SQL
+					update `{$dbName}`.`{$tableName}` tab
+					set tab.`{$column}`='{$newLogin}'
+					where tab.`{$column}`='{$currentLogin}'
+SQL;
+				echo 'Aktualizowanie kolumny `'.$column.'`. w tabeli `'.$tableName.'`... <span style="color:';
+				try {
+					$db->query($sql);
+					$affected=$db->affected_rows();
+					$affected_all+=$affected;
+					if ($affected) {
+						echo 'green">Zaktualizowano '.$affected.' rekordów.';
+					} else {
+						echo 'red">Nie zaktualizowano żadnego rekordu.';
+					}
+					echo "</span><br>";
+				} catch (Exception $e) { ?>
+					<div class="alert alert-danger">
+						<?php echo $e->getMessage(); ?>
+					</div>
+				<?php }
+			}
+		}
+		echo "<br>Łącznie zaktualizowano {$affected_all} rekordów.<br>";
+        
+        $homes="/Users/";
+        $currentHomeDir=$homes.$currentLogin;
+        $newHomeDir=$homes.$newLogin;
+        
+        $mails="/Library/Server/Mail/Data/mail/users/";
+        $currentMailDir=$mails.$currentLogin;
+        $newMailDir=$mails.$newLogin;
+        
+        $cmd = "sudo mv '{$currentHomeDir}' '{$newHomeDir}'";
+        #exec($cmd, null, null);
+        echo "Zmieniono nazwę katalogu domowego z {$currentHomeDir} na {$newHomeDir}<br>";
+        
+        $cmd = "sudo mv '{$currentMailDir }' '{$newMailDir}'";
+        #exec($cmd, null, null);
+        echo "Zmieniono nazwę katalogu pocztowego z {$currentMailDir} na {$newMailDir}";
+        
+        echo "</div>";
+	}
+
 }