blob: 4a05891e97ff2c48fb50231a4ab83befa5e01fe7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
<?php
/**
* TTarAssetDeployer class file.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2006 PradoSoft
* @license http://www.pradosoft.com/license/
* @version $Revision: $ $Date: $
* @package System.Web.UI
*/
/**
* TTarAssetDeployer class.
* Publish a tar file by extracting its contents to the assets directory.
* Each tar file must be accomplished with its own MD5 check sum file.
* The MD5 file is published when the tar contents are successfully
* extracted to the assets directory. The presence of the MD5 file
* as published asset assumes that the tar file has already been extracted.
*
* Compressed tar files are not supported.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @version $Revision: $ $Date: $
* @package System.Web.UI
* @since 3.0
*/
class TTarAssetManager extends TAssetManager
{
/**
* Publish a tar file by extracting its contents to the assets directory.
* Each tar file must be accomplished with its own MD5 check sum file.
* The MD5 file is published when the tar contents are successfully
* extracted to the assets directory. The presence of the MD5 file
* as published asset assumes that the tar file has already been extracted.
* @param string tar filename
* @param string MD5 checksum for the corresponding tar file.
* @return string URL path to the directory where the tar file was extracted.
*/
public function publishTarFile($tarfile, $md5sum)
{
//if md5 file is published assume tar asset deployed
if(($md5Path = $this->getPublishedUrl($md5sum)) != null)
return dirname($md5Path);
if(($fullpath=realpath($tarfile))===false)
throw new TIOException('unable_to_locate_tar_file', $tarfile);
else if(is_file($fullpath))
{
$dir=$this->hash(dirname($fullpath));
$destination = $this->getBasePath().'/'.$dir.'/';
if($this->deployTarFile($fullpath, $destination))
return dirname($this->publishFilePath($md5sum));
}
throw new TIOException('unable_to_publish_tar_file', $tarfile);
}
/**
* Extracts the tar file to the destination directory.
* N.B Tar file must not be compressed.
* @param string tar file
* @param string path where the contents of tar file are to be extracted
* @return boolean true if extract successful, false otherwise.
*/
protected function deployTarFile($fullpath,$destination)
{
Prado::using('System.Data.TTarFileExtractor');
$tar = new TTarFileExtractor($fullpath);
return $tar->extract($destination);
}
}
?>
|