00001 <?php
00002
00016
00017
00018
00019 define('VERSION_CHECK_URL', 'http://pkp.sfu.ca/ojs/xml/ojs-version.xml');
00020 define('VERSION_CODE_PATH', 'dbscripts/xml/version.xml');
00021
00022 import('db.XMLDAO');
00023 import('site.Version');
00024
00025 class VersionCheck {
00026
00031 function &getLatestVersion() {
00032 $returner = &VersionCheck::parseVersionXML(VERSION_CHECK_URL);
00033 return $returner;
00034 }
00035
00040 function &getCurrentDBVersion() {
00041 $versionDao = &DAORegistry::getDAO('VersionDAO');
00042 $dbVersion = &$versionDao->getCurrentVersion();
00043 return $dbVersion;
00044 }
00045
00050 function &getCurrentCodeVersion() {
00051 $versionInfo = VersionCheck::parseVersionXML(VERSION_CODE_PATH);
00052 if ($versionInfo) {
00053 $version = $versionInfo['version'];
00054 } else {
00055 $version = false;
00056 }
00057 return $version;
00058 }
00059
00064 function &parseVersionXML($url) {
00065 $xmlDao = &new XMLDAO();
00066 $data = $xmlDao->parseStruct($url, array());
00067 if (!$data) {
00068 $result = false;
00069 return $result;
00070 }
00071
00072
00073 $versionInfo = array(
00074 'application' => $data['application'][0]['value'],
00075 'release' => $data['release'][0]['value'],
00076 'tag' => $data['tag'][0]['value'],
00077 'date' => $data['date'][0]['value'],
00078 'info' => $data['info'][0]['value'],
00079 'package' => $data['package'][0]['value'],
00080 'patch' => array(),
00081 'version' => Version::fromString($data['release'][0]['value'])
00082 );
00083
00084 foreach ($data['patch'] as $patch) {
00085 $versionInfo['patch'][$patch['attributes']['from']] = $patch['value'];
00086 }
00087
00088 return $versionInfo;
00089 }
00090
00097 function getPatch(&$versionInfo, $codeVersion = null) {
00098 if (!isset($codeVersion)) {
00099 $codeVersion = &VersionCheck::getCurrentCodeVersion();
00100 }
00101 if (isset($versionInfo['patch'][$codeVersion->getVersionString()])) {
00102 return $versionInfo['patch'][$codeVersion->getVersionString()];
00103 }
00104 return null;
00105 }
00106
00111 function getVersionCheckUrl() {
00112 return VERSION_CHECK_URL;
00113 }
00114
00115 }
00116
00117 ?>