00001 <?php
00002
00016
00017
00018
00019 import('site.Version');
00020
00021 class VersionDAO extends DAO {
00026 function &getCurrentVersion() {
00027 $result = &$this->retrieve(
00028 'SELECT * FROM versions WHERE current = 1'
00029 );
00030
00031 $returner = null;
00032 if ($result->RecordCount() != 0) {
00033 $returner = &$this->_returnVersionFromRow($result->GetRowAssoc(false));
00034 }
00035
00036 $result->Close();
00037 unset($result);
00038
00039 return $returner;
00040 }
00041
00046 function &getVersionHistory() {
00047 $versions = array();
00048
00049 $result = &$this->retrieve(
00050 'SELECT * FROM versions ORDER BY date_installed DESC'
00051 );
00052
00053 while (!$result->EOF) {
00054 $versions[] = $this->_returnVersionFromRow($result->GetRowAssoc(false));
00055 $result->MoveNext();
00056 }
00057
00058 $result->Close();
00059 unset($result);
00060
00061 return $versions;
00062 }
00063
00069 function &_returnVersionFromRow(&$row) {
00070 $version = &new Version();
00071 $version->setMajor($row['major']);
00072 $version->setMinor($row['minor']);
00073 $version->setRevision($row['revision']);
00074 $version->setBuild($row['build']);
00075 $version->setDateInstalled($this->datetimeFromDB($row['date_installed']));
00076 $version->setCurrent($row['current']);
00077
00078 HookRegistry::call('VersionDAO::_returnVersionFromRow', array(&$version, &$row));
00079
00080 return $version;
00081 }
00082
00087 function insertVersion(&$version) {
00088 if ($version->getCurrent()) {
00089
00090 $this->update('UPDATE versions SET current = 0 WHERE current = 1');
00091 }
00092 if ($version->getDateInstalled() == null) {
00093 $version->setDateInstalled(Core::getCurrentDate());
00094 }
00095
00096 return $this->update(
00097 sprintf('INSERT INTO versions
00098 (major, minor, revision, build, date_installed, current)
00099 VALUES
00100 (?, ?, ?, ?, %s, ?)',
00101 $this->datetimeToDB($version->getDateInstalled())),
00102 array(
00103 $version->getMajor(),
00104 $version->getMinor(),
00105 $version->getRevision(),
00106 $version->getBuild(),
00107 $version->getCurrent()
00108 )
00109 );
00110 }
00111 }
00112
00113 ?>