getCurrentVersion(); return $dbVersion; } /** * Return the current code version. * @return Version */ function &getCurrentCodeVersion() { $versionInfo = VersionCheck::parseVersionXML(VERSION_CODE_PATH); if ($versionInfo) { $version = $versionInfo['version']; } else { $version = false; } return $version; } /** * Parse information from a version XML file. * @return array */ function &parseVersionXML($url) { $xmlDao = &new XMLDAO(); $data = $xmlDao->parseStruct($url, array()); if (!$data) { $result = false; return $result; } // FIXME validate parsed data? $versionInfo = array( 'application' => $data['application'][0]['value'], 'release' => $data['release'][0]['value'], 'tag' => $data['tag'][0]['value'], 'date' => $data['date'][0]['value'], 'info' => $data['info'][0]['value'], 'package' => $data['package'][0]['value'], 'patch' => array(), 'version' => Version::fromString($data['release'][0]['value']) ); if(isset($data['patch'])) { foreach ($data['patch'] as $patch) { $versionInfo['patch'][$patch['attributes']['from']] = $patch['value']; } } return $versionInfo; } /** * Find the applicable patch for the current code version (if available). * @param $versionInfo array as returned by parseVersionXML() * @param $codeVersion as returned by getCurrentCodeVersion() * @return string */ function getPatch(&$versionInfo, $codeVersion = null) { if (!isset($codeVersion)) { $codeVersion = &VersionCheck::getCurrentCodeVersion(); } if (isset($versionInfo['patch'][$codeVersion->getVersionString()])) { return $versionInfo['patch'][$codeVersion->getVersionString()]; } return null; } /** * Return URL to the remote version check script. * @return array */ function getVersionCheckUrl() { return VERSION_CHECK_URL; } } ?>