359 lines
11 KiB
PHP
Raw Normal View History

2015-07-06 16:58:50 +02:00
<?php
2015-09-22 18:22:11 +02:00
if ($_SESSION["verify"] != "RESPONSIVEfilemanager") {
die('forbiden');
}
2015-07-06 16:58:50 +02:00
2015-09-22 18:22:11 +02:00
function deleteDir($dir)
{
if (!file_exists($dir)) {
return true;
}
if (!is_dir($dir)) {
return unlink($dir);
}
2015-07-06 16:58:50 +02:00
foreach (scandir($dir) as $item) {
2015-09-22 18:22:11 +02:00
if ($item == '.' || $item == '..') {
continue;
}
if (!deleteDir($dir.DIRECTORY_SEPARATOR.$item)) {
return false;
}
2015-07-06 16:58:50 +02:00
}
return rmdir($dir);
}
2015-09-22 18:22:11 +02:00
function duplicate_file($old_path, $name)
{
if (file_exists($old_path)) {
$info=pathinfo($old_path);
$new_path=$info['dirname']."/".$name.".".$info['extension'];
if (file_exists($new_path)) {
return false;
}
return copy($old_path, $new_path);
2015-07-06 16:58:50 +02:00
}
}
2015-09-22 18:22:11 +02:00
function rename_file($old_path, $name, $transliteration)
{
$name=fix_filename($name, $transliteration);
if (file_exists($old_path)) {
$info=pathinfo($old_path);
$new_path=$info['dirname']."/".$name.".".$info['extension'];
if (file_exists($new_path)) {
return false;
}
return rename($old_path, $new_path);
2015-07-06 16:58:50 +02:00
}
}
2015-09-22 18:22:11 +02:00
function rename_folder($old_path, $name, $transliteration)
{
$name=fix_filename($name, $transliteration);
if (file_exists($old_path)) {
$new_path=fix_dirname($old_path)."/".$name;
if (file_exists($new_path)) {
return false;
}
return rename($old_path, $new_path);
2015-07-06 16:58:50 +02:00
}
}
2015-09-22 18:22:11 +02:00
function create_img_gd($imgfile, $imgthumb, $newwidth, $newheight="")
{
if (image_check_memory_usage($imgfile, $newwidth, $newheight)) {
require_once('php_image_magician.php');
$magicianObj = new imageLib($imgfile);
$magicianObj -> resizeImage($newwidth, $newheight, 'crop');
$magicianObj -> saveImage($imgthumb, 80);
return true;
2015-07-06 16:58:50 +02:00
}
return false;
}
2015-09-22 18:22:11 +02:00
function create_img($imgfile, $imgthumb, $newwidth, $newheight="")
{
if (image_check_memory_usage($imgfile, $newwidth, $newheight)) {
require_once('php_image_magician.php');
$magicianObj = new imageLib($imgfile);
$magicianObj -> resizeImage($newwidth, $newheight, 'auto');
$magicianObj -> saveImage($imgthumb, 80);
return true;
} else {
return false;
2015-07-06 16:58:50 +02:00
}
}
2015-09-22 18:22:11 +02:00
function makeSize($size)
{
$units = array('B','KB','MB','GB','TB');
$u = 0;
while ((round($size / 1024) > 0) && ($u < 4)) {
$size = $size / 1024;
$u++;
}
return (number_format($size, 0) . " " . $units[$u]);
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
function foldersize($path)
{
2015-07-06 16:58:50 +02:00
$total_size = 0;
$files = scandir($path);
$cleanPath = rtrim($path, '/'). '/';
2015-09-22 18:22:11 +02:00
foreach ($files as $t) {
2015-07-06 16:58:50 +02:00
if ($t<>"." && $t<>"..") {
$currentFile = $cleanPath . $t;
if (is_dir($currentFile)) {
$size = foldersize($currentFile);
$total_size += $size;
2015-09-22 18:22:11 +02:00
} else {
2015-07-06 16:58:50 +02:00
$size = filesize($currentFile);
$total_size += $size;
}
}
}
return $total_size;
}
2015-09-22 18:22:11 +02:00
function create_folder($path=false, $path_thumbs=false)
{
2015-07-06 16:58:50 +02:00
$oldumask = umask(0);
2015-09-22 18:22:11 +02:00
if ($path && !file_exists($path)) {
mkdir($path, 0777, true);
} // or even 01777 so you get the sticky bit set
if ($path_thumbs && !file_exists($path_thumbs)) {
mkdir($path_thumbs, 0777, true) or die("$path_thumbs cannot be found");
} // or even 01777 so you get the sticky bit set
2015-07-06 16:58:50 +02:00
umask($oldumask);
}
2015-09-22 18:22:11 +02:00
function check_files_extensions_on_path($path, $ext)
{
if (!is_dir($path)) {
2015-07-06 16:58:50 +02:00
$fileinfo = pathinfo($path);
2015-09-22 18:22:11 +02:00
if (function_exists('mb_strtolower')) {
if (!in_array(mb_strtolower($fileinfo['extension']), $ext)) {
2015-07-06 16:58:50 +02:00
unlink($path);
2015-09-22 18:22:11 +02:00
} elseif (!in_array(Tools::strtolower($fileinfo['extension']), $ext)) {
2015-07-06 16:58:50 +02:00
unlink($path);
2015-09-22 18:22:11 +02:00
}
}
} else {
2015-07-06 16:58:50 +02:00
$files = scandir($path);
2015-09-22 18:22:11 +02:00
foreach ($files as $file) {
check_files_extensions_on_path(trim($path, '/')."/".$file, $ext);
2015-07-06 16:58:50 +02:00
}
}
}
2015-09-22 18:22:11 +02:00
function check_files_extensions_on_phar($phar, &$files, $basepath, $ext)
{
foreach ($phar as $file) {
if ($file->isFile()) {
if (function_exists('mb_strtolower')) {
if (in_array(mb_strtolower($file->getExtension()), $ext)) {
$files[] = $basepath.$file->getFileName();
} elseif (in_array(Tools::strtolower($file->getExtension()), $ext)) {
$files[] = $basepath.$file->getFileName();
}
}
} elseif ($file->isDir()) {
$iterator = new DirectoryIterator($file);
2015-07-06 16:58:50 +02:00
check_files_extensions_on_phar($iterator, $files, $basepath.$file->getFileName().'/', $ext);
}
}
}
2015-09-22 18:22:11 +02:00
function fix_filename($str, $transliteration)
{
if ($transliteration) {
if (function_exists('transliterator_transliterate')) {
$str = transliterator_transliterate('Accents-Any', $str);
} else {
$str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str);
}
$str = preg_replace("/[^a-zA-Z0-9\.\[\]_| -]/", '', $str);
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
$str=str_replace(array('"', "'", "/", "\\"), "", $str);
2015-07-06 16:58:50 +02:00
$str=strip_tags($str);
// Empty or incorrectly transliterated filename.
// Here is a point: a good file UNKNOWN_LANGUAGE.jpg could become .jpg in previous code.
// So we add that default 'file' name to fix that issue.
2015-09-22 18:22:11 +02:00
if (strpos($str, '.') === 0) {
$str = 'file'.$str;
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
return trim($str);
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
function fix_dirname($str)
{
return str_replace('~', ' ', dirname(str_replace(' ', '~', $str)));
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
function fix_strtoupper($str)
{
if (function_exists('mb_strtoupper')) {
return mb_strtoupper($str);
} else {
return strtoupper($str);
}
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
function fix_strtolower($str)
{
if (function_exists('mb_strtoupper')) {
return mb_strtolower($str);
} else {
return strtolower($str);
}
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
function fix_path($path, $transliteration)
{
2015-07-06 16:58:50 +02:00
$info=pathinfo($path);
2015-09-22 18:22:11 +02:00
if (($s = strrpos($path, '/')) !== false) {
$s++;
}
if (($e = strrpos($path, '.') - $s) !== strlen($info['filename'])) {
$info['filename'] = substr($path, $s, $e);
$info['basename'] = substr($path, $s);
2015-07-06 16:58:50 +02:00
}
$tmp_path = $info['dirname'].DIRECTORY_SEPARATOR.$info['basename'];
2015-09-22 18:22:11 +02:00
$str=fix_filename($info['filename'], $transliteration);
if ($tmp_path!="") {
return $tmp_path.DIRECTORY_SEPARATOR.$str;
} else {
return $str;
}
2015-07-06 16:58:50 +02:00
}
2015-09-22 18:22:11 +02:00
function base_url()
{
return sprintf(
2015-07-06 16:58:50 +02:00
"%s://%s",
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
$_SERVER['HTTP_HOST']
);
}
2015-09-22 18:22:11 +02:00
function config_loading($current_path, $fld)
{
if (file_exists($current_path.$fld.".config")) {
require_once($current_path.$fld.".config");
return true;
2015-07-06 16:58:50 +02:00
}
echo "!!!!".$parent=fix_dirname($fld);
2015-09-22 18:22:11 +02:00
if ($parent!="." && !empty($parent)) {
config_loading($current_path, $parent);
2015-07-06 16:58:50 +02:00
}
return false;
}
2015-09-22 18:22:11 +02:00
function image_check_memory_usage($img, $max_breedte, $max_hoogte)
{
if (file_exists($img)) {
$K64 = 65536; // number of bytes in 64K
$memory_usage = memory_get_usage();
$memory_limit = abs(intval(str_replace('M', '', ini_get('memory_limit'))*1024*1024));
$image_properties = getimagesize($img);
$image_width = $image_properties[0];
$image_height = $image_properties[1];
$image_bits = $image_properties['bits'];
$image_memory_usage = $K64 + ($image_width * $image_height * ($image_bits) * 2);
$thumb_memory_usage = $K64 + ($max_breedte * $max_hoogte * ($image_bits) * 2);
$memory_needed = intval($memory_usage + $image_memory_usage + $thumb_memory_usage);
if ($memory_needed > $memory_limit) {
ini_set('memory_limit', (intval($memory_needed/1024/1024)+5) . 'M');
if (ini_get('memory_limit') == (intval($memory_needed/1024/1024)+5) . 'M') {
2015-07-06 16:58:50 +02:00
return true;
2015-09-22 18:22:11 +02:00
} else {
2015-07-06 16:58:50 +02:00
return false;
}
2015-09-22 18:22:11 +02:00
} else {
2015-07-06 16:58:50 +02:00
return true;
}
2015-09-22 18:22:11 +02:00
} else {
return false;
2015-07-06 16:58:50 +02:00
}
}
function endsWith($haystack, $needle)
{
return $needle === "" || substr($haystack, -strlen($needle)) === $needle;
}
2015-09-22 18:22:11 +02:00
function new_thumbnails_creation($targetPath, $targetFile, $name, $current_path, $relative_image_creation, $relative_path_from_current_pos, $relative_image_creation_name_to_prepend, $relative_image_creation_name_to_append, $relative_image_creation_width, $relative_image_creation_height, $fixed_image_creation, $fixed_path_from_filemanager, $fixed_image_creation_name_to_prepend, $fixed_image_creation_to_append, $fixed_image_creation_width, $fixed_image_creation_height)
{
2015-07-06 16:58:50 +02:00
//create relative thumbs
$all_ok=true;
2015-09-22 18:22:11 +02:00
if ($relative_image_creation) {
foreach ($relative_path_from_current_pos as $k=>$path) {
if ($path!="" && $path[strlen($path)-1]!="/") {
$path.="/";
}
if (!file_exists($targetPath.$path)) {
create_folder($targetPath.$path, false);
}
$info=pathinfo($name);
if (!endsWith($targetPath, $path)) {
if (!create_img($targetFile, $targetPath.$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].".".$info['extension'], $relative_image_creation_width[$k], $relative_image_creation_height[$k])) {
$all_ok=false;
}
}
}
2015-07-06 16:58:50 +02:00
}
//create fixed thumbs
2015-09-22 18:22:11 +02:00
if ($fixed_image_creation) {
foreach ($fixed_path_from_filemanager as $k=>$path) {
if ($path!="" && $path[strlen($path)-1]!="/") {
$path.="/";
}
$base_dir=$path.substr_replace($targetPath, '', 0, strlen($current_path));
if (!file_exists($base_dir)) {
create_folder($base_dir, false);
}
$info=pathinfo($name);
if (!create_img($targetFile, $base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'], $fixed_image_creation_width[$k], $fixed_image_creation_height[$k])) {
$all_ok=false;
}
}
2015-07-06 16:58:50 +02:00
}
return $all_ok;
}
// Get a remote file, using whichever mechanism is enabled
2015-09-22 18:22:11 +02:00
function get_file_by_url($url)
{
2015-07-06 16:58:50 +02:00
if (ini_get('allow_url_fopen')) {
return file_get_contents($url);
}
if (!function_exists('curl_version')) {
return false;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}