123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- <?php
- use Symfony\Component\Filesystem\Filesystem;
- function check_name_exist($file_path)
- {
- clearstatcache();
- $save_dir = getcwd();
- if (!is_dir(dirname($file_path))) {
- return false;
- }
- chdir(dirname($file_path));
- $file_name = basename($file_path);
- if (file_exists($file_name)) {
- chdir($save_dir);
- return true;
- } else {
- chdir($save_dir);
- return false;
- }
- }
- function my_delete($file)
- {
- if (check_name_exist($file)) {
- if (is_file($file)) {
- unlink($file);
- return true;
- } elseif (is_dir($file)) {
- removeDir($file);
- return true;
- }
- } else {
- return false;
- }
- }
- function removeDir($dir)
- {
- if (!@$opendir = opendir($dir)) {
- return false;
- }
- while ($readdir = readdir($opendir)) {
- if ($readdir != '..' && $readdir != '.') {
- if (is_file($dir.'/'.$readdir)) {
- if (!@unlink($dir.'/'.$readdir)) {
- return false;
- }
- } elseif (is_dir($dir.'/'.$readdir)) {
- if (!removeDir($dir.'/'.$readdir)) {
- return false;
- }
- }
- }
- }
- closedir($opendir);
- if (!@rmdir($dir)) {
- return false;
- }
- return true;
- }
- function folder_is_empty($in_folder)
- {
- $folder_is_empty = 0;
- if (is_dir($in_folder)) {
- $tab_folder_content = scandir($in_folder);
- if ((count($tab_folder_content) == 2 &&
- in_array(".", $tab_folder_content) &&
- in_array("..", $tab_folder_content)
- ) ||
- (count($tab_folder_content) < 2)
- ) {
- $folder_is_empty = 1;
- }
- }
- return $folder_is_empty;
- }
- function my_rename($file_path, $new_file_name) {
- $save_dir = getcwd();
- $path = dirname($file_path);
- $old_file_name = basename($file_path);
- $new_file_name = api_replace_dangerous_char($new_file_name);
-
- if ((strpos($new_file_name, '.') === false) && ($dotpos = strrpos($old_file_name, '.'))) {
- $new_file_name .= substr($old_file_name, $dotpos);
- }
-
-
-
- $new_file_name = php2phps($new_file_name);
- if ($new_file_name == $old_file_name) {
- return $old_file_name;
- }
- if (strtolower($new_file_name) != strtolower($old_file_name) && check_name_exist($path.'/'.$new_file_name)) {
- return false;
- }
-
-
-
- chdir($path);
- $res = rename($old_file_name, $new_file_name) ? $new_file_name : false;
- chdir($save_dir);
- return $res;
- }
- function move($source, $target, $forceMove = true, $moveContent = false)
- {
- $target = realpath($target);
- $source = realpath($source);
- if (check_name_exist($source)) {
- $file_name = basename($source);
-
- if (strcasecmp($target, dirname($source)) === 0) {
- return false;
- }
- $isWindowsOS = api_is_windows_os();
- $canExec = function_exists('exec');
-
- if (is_file($source)) {
- if ($forceMove && !$isWindowsOS && $canExec) {
- exec('mv ' . $source . ' ' . $target . '/' . $file_name);
- } else {
- copy($source, $target . '/' . $file_name);
- unlink($source);
- }
- return true;
- } elseif (is_dir($source)) {
-
- if (strncasecmp($target, $source, strlen($source)) == 0) {
- return false;
- }
-
- if ($forceMove && !$isWindowsOS && $canExec) {
- if ($moveContent) {
- $base = basename($source);
- $out = []; $retVal = -1;
- exec('mv '.$source.'/* '.$target.'/'.$base, $out, $retVal);
- if ($retVal !== 0) {
- return false;
- }
- exec('rm -rf '.$source);
- } else {
- $out = []; $retVal = -1;
- exec("mv $source $target", $out, $retVal);
- if ($retVal !== 0) {
- error_log("Chamilo error fileManage.lib.php: mv $source $target\n");
- return false;
- }
- }
- } else {
- return copyDirTo($source, $target);
- }
- return true;
- }
- } else {
- return false;
- }
- }
- function copyDirTo($source, $destination, $move = true)
- {
- $fs = new Filesystem();
- if (is_dir($source)) {
- $fs->mkdir($destination);
- if (!is_dir($destination)) {
- error_log("Chamilo copyDirTo cannot mkdir $destination\n");
- return false;
- }
- $fs->mirror($source, $destination);
- if ($move) {
- $fs->remove($source);
- }
- }
- return true;
- }
- function getextension($filename)
- {
- $bouts = explode('.', $filename);
- return array(array_pop($bouts), implode('.', $bouts));
- }
- function dirsize($root, $recursive = true) {
- $dir = @opendir($root);
- $size = 0;
- while ($file = @readdir($dir)) {
- if (!in_array($file, array('.', '..'))) {
- if (is_dir($root.'/'.$file)) {
- $size += $recursive ? dirsize($root.'/'.$file) : 0;
- } else {
- $size += @filesize($root.'/'.$file);
- }
- }
- }
- @closedir($dir);
- return $size;
- }
|