function RefreshGitData($strRepository, $strRegistryName)
{
    $strXml = file_get_contents('https://github.com/qcodo/' . $strRepository . '/commits/master.atom');
    $objXml = new SimpleXMLElement($strXml);
    $objMostRecentCommit = $objXml->entry[0];
    $dttCommit = new QDateTime((string) $objMostRecentCommit->updated);
    $strMessage = trim((string) $objMostRecentCommit->title);
    $strDate = $dttCommit->__toString('DDDD, MMMM D, YYYY');
    $strUrl = (string) $objMostRecentCommit->link['href'];
    // Cleanup Message
    if (($intPosition = strpos($strMessage, "\n")) !== false) {
        $strMessage = trim(substr($strMessage, 0, $intPosition));
    }
    Registry::SetValue('gitinfo_' . $strRegistryName . '_message', $strMessage);
    Registry::SetValue('gitinfo_' . $strRegistryName . '_date', $strDate);
    Registry::SetValue('gitinfo_' . $strRegistryName . '_url', $strUrl);
}
function RefreshGitData($strRepository, $strRegistryName)
{
    $strXml = file_get_contents('http://github.com/api/v2/xml/commits/list/qcodo/' . $strRepository . '/master');
    $objXml = new SimpleXMLElement($strXml);
    $objMostRecentCommit = $objXml->commit[0];
    $strNodeName = 'committed-date';
    $dttCommit = new QDateTime((string) $objMostRecentCommit->{$strNodeName});
    $strMessage = trim((string) $objMostRecentCommit->message);
    $strDate = $dttCommit->__toString('DDDD, MMMM D, YYYY');
    $strUrl = (string) $objMostRecentCommit->url;
    // Cleanup Message
    if (($intPosition = strpos($strMessage, "\n")) !== false) {
        $strMessage = trim(substr($strMessage, 0, $intPosition));
    }
    Registry::SetValue('gitinfo_' . $strRegistryName . '_message', $strMessage);
    Registry::SetValue('gitinfo_' . $strRegistryName . '_date', $strDate);
    Registry::SetValue('gitinfo_' . $strRegistryName . '_url', $strUrl);
}
// 3.d.2) Create the HKCU\TestRegistry\Values\MultiStringValueMultiple key
$registry->SetMultiStringValue(Registry::HKCU, $test_key, 'MultiStringValueMultiple', ['Sample 1', 'Sample 2', 'Sample 3']);
check_error();
// 3.e) Create the HKCU\TestRegistry\Values\QWORDValue key (one greater than PHP_INT_MAX, and the other equal to 1)
$registry->SetQWORDValue(Registry::HKCU, $test_key, 'QWORDBigValue', PHP_INT_MAX * 10);
check_error();
$registry->SetQWORDValue(Registry::HKCU, $test_key, 'QWORDValue', 1);
check_error();
// 3.f) Create the HKCU\TestRegistry\Values\StringValue key
$registry->SetStringValue(Registry::HKCU, $test_key, 'StringValue', 'this is a sample string value');
check_error();
// 4.a) Create the HKCU\TestRegistry\Values\WShellStringValue key
$registry->SetValue(Registry::HKCU, $test_key, 'WShellStringValue', 'this is a sample WSHELL string value', Registry::REG_SZ);
check_error();
// 4.b) Create the HKCU\TestRegistry\Values\WShellExpandedStringValue key
$registry->SetValue(Registry::HKCU, $test_key, 'WShellExpandedStringValue', 'this is a sample WSHELL expanded string value, WINDIR = %WINDIR%', Registry::REG_EXPAND_SZ);
check_error();
// 4.c) Create the HKCU\TestRegistry\Values\WShellDWORDValue key
$registry->SetValue(Registry::HKCU, $test_key, 'WShellDWORDValue', 0x1020304, Registry::REG_DWORD);
check_error();
// 5) Enumerate all the values in the HKCU\TestRegistry\Values key with their type
$keys = $registry->EnumValues(Registry::HKCU, $test_key, false);
check_error();
echo "Created values :{$eol}";
foreach ($keys as $key => $type) {
    echo "{$tab}{$key} ({$type}){$eol}";
}
// 6) Enumerate all the values in the HKCU\TestRegistry\Values key, using registry value objects
$keys = $registry->EnumValuesEx(Registry::HKCU, $test_key);
check_error();
echo "Created RegistryValue objects :{$eol}";