File "file.php"
Full Path: /home/romayxjt/public_html/wp-content/plugins/vikbooking/libraries/adapter/filesystem/file.php
File size: 3.65 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @package VikWP - Libraries
* @subpackage adapter.filesystem
* @author E4J s.r.l.
* @copyright Copyright (C) 2023 E4J s.r.l. All Rights Reserved.
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @link https://vikwp.com
*/
// No direct access
defined('ABSPATH') or die('No script kiddies please!');
JLoader::import('adapter.filesystem.path');
JLoader::import('adapter.filesystem.folder');
/**
* This class provides a common interface for
* Files handling in the Wordpress CMS plugins.
*
* @since 10.0
*/
class JFile
{
/**
* Makes file name safe to use.
*
* @param string $file The name of the file (not full path).
*
* @return string The sanitised string.
*/
public static function makeSafe($file)
{
// remove any trailing dots, as those aren't ever valid file names.
$file = rtrim($file, '.');
$regex = array('#(\.){2,}#', '#[^A-Za-z0-9\.\_\- ]#', '#^\.#');
return trim(preg_replace($regex, '', $file));
}
/**
* Moves an uploaded file to a destination folder.
*
* @param string $src The name of the php (temporary) uploaded file.
* @param string $dest The path (including filename) to move the uploaded file to.
*
* @return boolean True on success.
*/
public static function upload($src, $dest)
{
$ret = false;
// ensure that the paths are valid and clean
$src = JPath::clean($src);
$dest = JPath::clean($dest);
// create the destination directory if it does not exist
$baseDir = dirname($dest);
if (!file_exists($baseDir))
{
JFolder::create($baseDir);
}
if (is_writeable($baseDir) && move_uploaded_file($src, $dest))
{
// short circuit to prevent file permission errors
if (JPath::setPermissions($dest))
{
$ret = true;
}
}
return $ret;
}
/**
* Write contents to a file.
*
* @param string $file The full file path.
* @param string $buffer The buffer to write.
*
* @return boolean True on success.
*/
public static function write($file, $buffer)
{
@set_time_limit(ini_get('max_execution_time'));
$file = JPath::clean($file);
// If the destination directory doesn't exist we need to create it
if (!file_exists(dirname($file)))
{
if (JFolder::create(dirname($file)) == false)
{
return false;
}
}
return is_int(file_put_contents($file, $buffer));
}
/**
* Copy a source file to a destination.
*
* @param string $src The full file path.
* @param string $dest The full destination path.
*
* @return boolean True on success.
*/
public static function copy($src, $dest)
{
return @copy(JPath::clean($src), JPath::clean($dest));
}
/**
* Delete one or multiple files.
*
* @param mixed $file The file path-name or array of file path-names.
*
* @return boolean True on success.
*/
public static function delete($file)
{
if (is_array($file))
{
$files = $file;
}
else
{
$files = array($file);
}
foreach ($files as $file)
{
$file = JPath::clean($file);
if (is_file($file))
{
// Try making the file writable first. If it's read-only, it can't be deleted
// on Windows, even if the parent folder is writable
@chmod($file, 0777);
// The file should be removable as long as the owner is www-data
if (!@unlink($file))
{
// impossible to remove the file, stop the process immediatelly
return false;
}
}
}
return true;
}
/**
* Wrapper for the standard file_exists function
*
* @param string $file File path
*
* @return boolean True if path is a file.
*
* @since 10.1.23
*/
public static function exists($file)
{
return is_file(JPath::clean($file));
}
}