class.history.php
3.34 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
/**
* class history
* this class used to keep records of any changed to uploaded images under a session
* @author Logan Cai (cailongqun [at] yahoo [dot] com [dot] cn)
* @link www.phpletter.com
* @since 22/May/2007
*
*/
class History
{
var $history = array(); //keep all changes
var $path = ''; //path to the iamge
var $session = null;
/**
* constructor
*
* @param string $path the path to the image
* @param object $session an instance of session class
*/
function __construct($path, &$session)
{
$this->path = $path;
$this->session = &$session;
if(!isset($_SESSION[$this->path]))
{
$_SESSION[$this->path] = array();
}
}
/**
* constructor
*
* @param string $path the path to the image
* @param object $session an instance of session class
*/
function History($path, &$session)
{
$this->__construct($path, $session);
}
/**
* keep tracks of each changes made to an image
*
* @param string $key
* @param string $info array('name', 'restorable', 'is_original')
*/
function add($info)
{
$_SESSION[$this->path][] = $info;
}
/**
* get the lastest changes for restore
*
* @return array array('name', 'restorable', 'is_original')
*/
function getNumRestorable()
{
$output = 0;
if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path]))
{
foreach($_SESSION[$this->path] as $k=>$v)
{
if(!empty($v['restorable']) && empty($v['is_original']))
{
if(file_exists($this->session->getSessionDir() . $v['name']))
{
$output++;
}else
{
}
}
}
}
return $output;
}
/**
* get the path of image which keep the lastest changes
*
* @return return empty array when failed
*/
function getLastestRestorable()
{
if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path]) && sizeof($_SESSION[$this->path]))
{
$sessionImages = array_reverse($_SESSION[$this->path], true);
$lastestKey = '';
foreach($sessionImages as $k=>$v)
{
if($v['restorable'] && empty($v['is_original']) && file_exists($this->session->getSessionDir() . $v['name']))
{
return $sessionImages[$k];
}
}
}
return array();
}
/**
* get the original image which is kept in the session folder
*
* @return array
*/
function getOriginalImage()
{
$outputs = array();
if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path]))
{
$sessionImages = array_reverse($_SESSION[$this->path], true);
foreach($sessionImages as $k=>$v)
{
if(!empty($v['is_original']))
{
if(file_exists($this->session->getSessionDir() . $v['name']))
{
return array('info'=>$_SESSION[$this->path][$k], 'key'=>$k);
}
}
}
}
return $outputs;
}
/**
* remove the lastest restorable state
*
* @return boolean
*/
function restore()
{
if(isset($_SESSION[$this->path]) && is_array($_SESSION[$this->path]) && sizeof($_SESSION[$this->path]))
{
$sessionImages = array_reverse($_SESSION[$this->path], true);
$lastestKey = '';
foreach($sessionImages as $k=>$v)
{
if($v['restorable'] && empty($v['is_original']))
{
unset($_SESSION[$k]);
return true;
}
}
}
return false;
}
}
?>