1
0
Fork 0
MySQLDumper/library/Msd/File.php

131 Zeilen
3.4 KiB
PHP

<?php
/**
* This file is part of MySQLDumper released under the GNU/GPL 2 license
* http://www.mysqldumper.net
*
* @package MySQLDumper
* @subpackage File
* @version SVN: $rev: 1207 $
* @author $Author$
*/
/**
* File-Helper Class
*
* Class offers some methods for file handling
*
* @package MySQLDumper
* @subpackage File
*/
class Msd_File
{
/**
* Get CHMOD of a file
*
* @param string $file The file to get chmod for
*
* @return int
*/
public static function getChmod($file)
{
clearstatcache();
return @substr(decoct(fileperms($file)), -3);
}
/**
* Detects if file or directory is writable and trys to chmod it.
*
* Returns if file or directory is writable after chmodding.
*
* @param string $path
* @param string $chmod
*
* @return bool
*/
public static function isWritable($path, $chmod)
{
$fileValidator = new Msd_Validate_File_Accessible(
array('accessType' => array('write'))
);
if (!$fileValidator->isValid($path)) {
@chmod($path, $chmod);
}
return $fileValidator->isValid($path);
}
/**
* Get information of latest backup file
*
* @return array
*/
public static function getLatestBackupInfo()
{
$config = Msd_Configuration::getInstance();
$latestBackup = array();
$dir = new DirectoryIterator($config->get('paths.backup'));
foreach ($dir as $file) {
if ($file->isFile()) {
$fileMtime = $file->getMTime();
if (!isset($latestBackup['mtime']) ||
$fileMtime > $latestBackup['mtime']) {
$filename = $file->getFilename();
$latestBackup['filename'] = $filename;
$latestBackup['fileMtime'] = date("d.m.Y H:i", $fileMtime);
}
}
}
return $latestBackup;
}
/**
* Returns an array with the names of all saved configuration files
*
* Strips extensions.
*
* @return array List of configuration names
*/
public static function getConfigNames()
{
$config = Msd_Configuration::getInstance();
$configPath = $config->get('paths.config');
if (!is_readable($configPath)) {
return array();
}
$dir = new DirectoryIterator($configPath);
$files = array();
foreach ($dir as $file) {
if ($file->isFile()) {
$filename = $file->getFilename();
if (substr($filename, -4) == '.ini') {
$files[] = substr($filename, 0, - 4);
}
}
}
@sort($files);
return $files;
}
/**
* Get list of available themes.
*
* @return array
*/
public static function getThemeList()
{
$dir = new DirectoryIterator(APPLICATION_PATH . '/../public/css/');
$themes = array();
while ($dir->valid()) {
$current = $dir->current();
if ($current->isDir() &&
!$current->isDot() &&
$current->getBasename() != '.svn'
) {
$themeName= $current->getBasename();
$themes[$themeName] = $themeName;
}
$dir->next();
}
return $themes;
}
}