00001 <?php
00002
00016
00017
00018
00019 import('file.TemporaryFile');
00020
00021 class TemporaryFileDAO extends DAO {
00028 function &getTemporaryFile($fileId, $userId) {
00029 $result = &$this->retrieveLimit(
00030 'SELECT t.* FROM temporary_files t WHERE t.file_id = ? and t.user_id = ?',
00031 array($fileId, $userId),
00032 1
00033 );
00034
00035 $returner = null;
00036 if (isset($result) && $result->RecordCount() != 0) {
00037 $returner = &$this->_returnTemporaryFileFromRow($result->GetRowAssoc(false));
00038 }
00039
00040 $result->Close();
00041 unset($result);
00042
00043 return $returner;
00044 }
00045
00051 function &_returnTemporaryFileFromRow(&$row) {
00052 $temporaryFile = &new TemporaryFile();
00053 $temporaryFile->setFileId($row['file_id']);
00054 $temporaryFile->setFileName($row['file_name']);
00055 $temporaryFile->setFileType($row['file_type']);
00056 $temporaryFile->setFileSize($row['file_size']);
00057 $temporaryFile->setUserId($row['user_id']);
00058 $temporaryFile->setOriginalFileName($row['original_file_name']);
00059 $temporaryFile->setDateUploaded($this->datetimeFromDB($row['date_uploaded']));
00060
00061 HookRegistry::call('TemporaryFileDAO::_returnTemporaryFileFromRow', array(&$temporaryFile, &$row));
00062
00063 return $temporaryFile;
00064 }
00065
00071 function insertTemporaryFile(&$temporaryFile) {
00072 $this->update(
00073 sprintf('INSERT INTO temporary_files
00074 (user_id, file_name, file_type, file_size, original_file_name, date_uploaded)
00075 VALUES
00076 (?, ?, ?, ?, ?, %s)',
00077 $this->datetimeToDB($temporaryFile->getDateUploaded())),
00078 array(
00079 $temporaryFile->getUserId(),
00080 $temporaryFile->getFileName(),
00081 $temporaryFile->getFileType(),
00082 $temporaryFile->getFileSize(),
00083 $temporaryFile->getOriginalFileName()
00084 )
00085 );
00086
00087 $temporaryFile->setFileId($this->getInsertTemporaryFileId());
00088 return $temporaryFile->getFileId();
00089 }
00090
00095 function updateTemporaryFile(&$temporaryFile) {
00096 $this->update(
00097 sprintf('UPDATE temporary_files
00098 SET
00099 file_name = ?,
00100 file_type = ?,
00101 file_size = ?,
00102 user_id = ?,
00103 original_file_name = ?,
00104 date_uploaded = %s
00105 WHERE file_id = ?',
00106 $this->datetimeToDB($temporaryFile->getDateUploaded())),
00107 array(
00108 $temporaryFile->getFileName(),
00109 $temporaryFile->getFileType(),
00110 $temporaryFile->getFileSize(),
00111 $temporaryFile->getUserId(),
00112 $temporaryFile->getOriginalFileName(),
00113 $temporaryFile->getFileId()
00114 )
00115 );
00116
00117 return $temporaryFile->getFileId();
00118
00119 }
00120
00126 function deleteTemporaryFileById($fileId, $userId) {
00127 return $this->update(
00128 'DELETE FROM temporary_files WHERE file_id = ? AND user_id = ?', array($fileId, $userId)
00129 );
00130 }
00131
00136 function deleteTemporaryFilesByUserId($userId) {
00137 return $this->update(
00138 'DELETE FROM temporary_files WHERE user_id = ?', $userId
00139 );
00140 }
00141
00142 function &getExpiredFiles() {
00143
00144 $expiryThresholdTimestamp = time() - (60 * 60 * 24);
00145
00146 $temporaryFiles = array();
00147
00148 $result = &$this->retrieve(
00149 'SELECT * FROM temporary_files WHERE date_uploaded < ' . $this->datetimeToDB($expiryThresholdTimestamp)
00150 );
00151
00152 while (!$result->EOF) {
00153 $temporaryFiles[] = &$this->_returnTemporaryFileFromRow($result->GetRowAssoc(false));
00154 $result->MoveNext();
00155 }
00156
00157 $result->Close();
00158 unset($result);
00159
00160 return $temporaryFiles;
00161 }
00162
00167 function getInsertTemporaryFileId() {
00168 return $this->getInsertId('temporary_files', 'file_id');
00169 }
00170 }
00171
00172 ?>