C# – Sharepoint Dokument-Version und die History – Umwandlung und Konvertierung

Veröffentlicht von

Wie kann ich aus einer Sharepoint-URL die Version auslesen.

Ein typischer Link eines Verweises auf die History in Sharepoint sieht in etwa so aus:

https://company.sharepoint.com/sites/TeamName/_vti_history/518/document.docx

Erkennbar ist der Link durch das „_vti_history“ in der URL. Daraus lässt sich programmatisch auch leicht die Original-URL aus der neuen Version basteln:

https://company.sharepoint.com/sites/TeamName/document.docx

Im Prinzip schneidet man hierzu einfach die „_vti_history“ und die Zahl heraus. Die Zahl ist übrigens die Version, in dem Fall die Version des Dokuments. Diese entspricht der folgenden Version:

Die 512 ist kodiert die Version 1.6. Dabei kommt folgende Formel zum Einsatz:

Version = Major * 512 + Minor

Also in unserem Beispiel:

518 = 1 * 512 + 6

Umwandlung von Major.Minor mit C#

/// <summary>
/// Converts a major.minor version information to the sharepoint version
/// number
/// </summary>
/// <param name="version">e.g. 1.6</param>
/// <returns></returns>
public static int MajorMinorToSharepointVersion(string version)
{
	var splitted = version.Split('.');
	if (splitted.Length != 2) return -1;

	var major = Convert.ToInt16(splitted[0]);
	var minor = Convert.ToInt16(splitted[1]);

	int result = major * 512 + minor;
	return result;
}

Umwandlung von Sharepoint Version nach Major.Minor

/// <summary>
/// Converts a sharepoint version to the readable major.minor format
/// </summary>
/// <param name="sharepointVersion">e.g. 518</param>
/// <returns></returns>
public static string SharepointVersionToMajorMinor(int sharepointVersion)
{
	var remainder = sharepointVersion % 512;
	var major = sharepointVersion / 512;
	var version = major + "." + remainder;

	return version;
}

Ermitteln, ob ein Link ein History-Link ist

/// <summary>
/// Checks if the url is a history link from Sharepoint
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static bool IsHistoryLink(string url)
{
	var result = url.Contains("_vti_history");
	return result;
}

Version aus Sharepoint-URL auslesen

/// <summary>
/// Extracts the version from a Sharepoint history url
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static int GetVersionFromUrl(string url)
{
	var pattern = @"_vti_history\/(?<version>.*?)\/";
	var regex = new Regex(pattern);
	var match = regex.Match(url);

	if (match.Success)
	{
		var versionString = match.Groups["version"].Value;
		var versionInt = Convert.ToInt16(versionString);
		return versionInt;
	}

	return -1;
}

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.