36 private $contentFolders;
43 private $contentFolder;
70 $this->contentFolders = $contentFolders;
71 $this->maxBackups = (int) $cf[
'backup'][
'numberoffiles'];
82 foreach ($this->contentFolders as $folder) {
83 $result .= $this->backupSingleFolder($folder);
98 $this->contentFolder = $folder;
99 $this->contentFile = $this->contentFolder .
'content.htm';
100 $basename = date(
"Ymd_His") .
'_content.htm';
101 $filename = $this->contentFolder . $basename;
102 $needsBackup = $this->needsBackup();
103 if (!$needsBackup || $this->backupFile($basename)) {
105 $result .= $this->renderCreationInfo($filename);
107 $deletions = $this->deleteSurplusBackups();
108 $result .= $this->renderDeletionResults($deletions);
110 e(
'cntsave',
'backup', $filename);
120 private function findBackups()
123 if (is_dir($this->contentFolder) && ($dir = opendir($this->contentFolder))) {
124 while (($entry = readdir($dir)) !==
false) {
140 private function needsBackup()
142 if ($this->maxBackups <= 0) {
145 $latestBackup = $this->latestBackup();
147 return md5_file($this->contentFile) != md5_file($latestBackup);
160 private function latestBackup()
162 $backups = $this->findBackups();
163 if (!empty($backups)) {
164 return $this->contentFolder . $backups[count($backups) - 1];
177 private function backupFile($basename)
179 return copy($this->contentFile, $this->contentFolder . $basename);
187 private function deleteSurplusBackups()
190 $basenames = $this->findBackups();
191 $basenames = array_slice($basenames, 0, -$this->maxBackups);
192 foreach ($basenames as $basename) {
193 $filename = $this->contentFolder . $basename;
194 $result[$filename] = unlink($filename);
208 private function renderCreationInfo($filename)
212 $message = sprintf(
'%s %s %s',
utf8_ucfirst($tx[
'filetype'][
'backup']), $filename, $tx[
'result'][
'created']);
223 private function renderDeletionResults(array $deletions)
226 foreach ($deletions as $filename => $deleted) {
228 $results .= $this->renderDeletionInfo($filename);
230 e(
'cntdelete',
'backup', $filename);
245 private function renderDeletionInfo($filename)
249 $message = sprintf(
'%s %s %s',
utf8_ucfirst($tx[
'filetype'][
'backup']), $filename, $tx[
'result'][
'deleted']);
__construct(array $contentFolders)
XH_isContentBackup($filename, $regularOnly=true)
backupSingleFolder($folder)
XH_message($type, $message)